嵌入式系统学习Day29(tcp)

cs 复制代码
#include <netinet/in.h>
#include <netinet/ip.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h> /* See NOTES */
#include <unistd.h>
#include <time.h>
typedef struct sockaddr *(SA);
int main(int argc, char **argv)
{
  //监听套接字
  int listfd = socket(AF_INET, SOCK_STREAM, 0);
  if (-1 == listfd)
  {
    perror("scoket error\n");
    return 1;
  }
  // man 7 ip
  struct sockaddr_in ser, cli;
  bzero(&ser, sizeof(ser));
  bzero(&cli, sizeof(cli));

  ser.sin_family = AF_INET;
  ser.sin_port = htons(50000);
  // 127.0.0.1 表示自己的ip地址 。 本机自己收发
  // ser.sin_addr.s_addr = inet_addr()"127.0.0.1");
  ser.sin_addr.s_addr = INADDR_ANY;
  int ret = bind(listfd, (SA)&ser, sizeof(ser));
  if (-1 == ret)
  {
    perror("bind");
    return 1;
  }
  // 第二参数不是可以链接客户端的个数
  //三次握手的排队数
  listen(listfd, 3);
  socklen_t len = sizeof(cli);
  //通信套接字
  int conn = accept(listfd, (SA)&cli, &len);
  if (-1 == conn)
  {
    perror("accept");
    return 1;
  }
  time_t tm;
  while (1)
  {
    char buf[1024]={0};
    int ret = recv(conn,buf,sizeof(buf),0);
    if(ret<=0)
    {
        break;
    }
    time(&tm);
    sprintf(buf,"%s %s",buf,ctime(&tm));
    send(conn,buf,strlen(buf),0);
  }
  close(listfd);
  close(conn);

  return 0;
}
cs 复制代码
#include <netinet/in.h>
#include <netinet/ip.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h> /* See NOTES */
#include <time.h>
#include <unistd.h>
typedef struct sockaddr *(SA);

int main(int argc, char **argv)
{
  int conn = socket(AF_INET, SOCK_STREAM, 0);
  if (-1 == conn)
  {
    perror("socket");
    return 1;
  }
  struct sockaddr_in ser;
  bzero(&ser, sizeof(ser));

  ser.sin_family = AF_INET;
  ser.sin_port = htons(50000);
  // 127.0.0.1 表示自己的ip地址 。 本机自己收发
  // ser.sin_addr.s_addr = inet_addr()"127.0.0.1");
  ser.sin_addr.s_addr = INADDR_ANY;

  int ret = connect(conn, (SA)&ser, sizeof(ser));
  if (-1 == ret)
  {
    perror("connect error\n");
    return 1;
  }
  int i = 10;
  while (i--)
  {
    char buf[1024]="hello,this is tcp test";
    send(conn,buf,strlen(buf),0);
    bzero(buf,sizeof(buf));
    recv(conn,buf,sizeof(buf),0);
    printf("from ser:%s\n",buf);
    sleep(1);
  }
  close(conn);

  return 0;
}
相关推荐
寰天柚子4 小时前
裸金属服务器深度解析:适用场景、选型指南与运维实践
服务器·网络·github
Larry_Yanan4 小时前
Qt多进程(一)进程间通信概括
开发语言·c++·qt·学习
GTgiantech4 小时前
精准成本控制与单向通信优化:1X9、SFP单收/单发光模块专业解析
运维·网络
Suchadar4 小时前
ACL访问控制列表协议
网络·智能路由器
做cv的小昊5 小时前
【TJU】信息检索与分析课程笔记和练习(1)认识文献
经验分享·笔记·学习·搜索引擎·全文检索
再睡一夏就好6 小时前
深入Linux线程:从轻量级进程到双TCB架构
linux·运维·服务器·c++·学习·架构·线程
蒙奇D索大6 小时前
【11408学习记录】考研英语长难句拆解三步法:三步拆解2020年真题,攻克阅读难点
笔记·学习·考研·改行学it
好奇龙猫6 小时前
【日语学习-日语知识点小记-构建基础-JLPT-N3阶段-二阶段(32):本階段が終わります】
学习
广东大榕树信息科技有限公司6 小时前
如何通过国产信创动环监控系统优化工厂环境管理?
运维·网络·物联网·国产动环监控系统·动环监控系统
悠闲漫步者6 小时前
第2章 MCS-51单片机的串口和最小系统(学习笔记)
笔记·学习·51单片机