千家信息网

Linux怎么实现TCP双向通信

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要讲解了"Linux怎么实现TCP双向通信",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Linux怎么实现TCP双向通信"吧!双向通信一般指
千家信息网最后更新 2025年11月07日Linux怎么实现TCP双向通信

这篇文章主要讲解了"Linux怎么实现TCP双向通信",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Linux怎么实现TCP双向通信"吧!

双向通信一般指双向交替通信。双向交替通信又称为半双工通信,即通信的双方都可以发送信息,但不能双方同时发送(当然也就不能同时接收)。

Linux TCP双向通信具体方法

Server.c

 #include #include #include #include #include  #include    #define IPADDRESS "127.0.0.1" #define PORT 8848 #define BUF_SIZE 1024    //发送消息 void* SendMes_Thread(void* Arg) {   puts("Thread created.");   //类型转换  int* Client_Socket=(int*)Arg;  char Mes_Buf[BUF_SIZE]={0};   while(1)  {   scanf("%s",Mes_Buf);   send(*Client_Socket,Mes_Buf,strlen(Mes_Buf)+1,0);   bzero(Mes_Buf,BUF_SIZE);  }   close(*Client_Socket);  return NULL; }  int main(int Argc,char** Argv) {    //创建服务器套接字  int Server_Socket=socket(AF_INET,SOCK_STREAM,0);  if(-1==Server_Socket)  {   perror("Server socket creation failed!");   return -1;  }    //服务器的网络信息  struct sockaddr_in Server_NetInfo={0};  Server_NetInfo.sin_family=AF_INET;  Server_NetInfo.sin_addr.s_addr=inet_addr(IPADDRESS);  Server_NetInfo.sin_port=htons(PORT);   //绑定IP和端口  if(-1==bind(Server_Socket,(const struct sockaddr*)&Server_NetInfo,sizeof(struct sockaddr)))  {   perror("Binding failure!");   return -1;  }    //监听服务器  if(-1==listen(Server_Socket,6))  {   perror("Linstening the to failure!");   return -1;  }    socklen_t Client_NetInfoSize=sizeof(struct sockaddr_in);  //客户端的网络信息  struct sockaddr_in Client_NetInfo={0};  //创建客户端套接字  int Client_Socket=-1;  //接受请求  Client_Socket=accept(Server_Socket,(struct sockaddr*)&Client_NetInfo,&Client_NetInfoSize);  if(-1==Client_Socket)  {   perror("Accepting fainure!");  }   //创建线程,用于发送消息  pthread_t Thread_ID=-1;  if(-1==pthread_create(&Thread_ID,NULL,SendMes_Thread,(void*)&Client_Socket))  {   puts("Create thread falied!");   return -1;  }   char Mes_Buf[BUF_SIZE]={0};  while(1)  {   if(0==recv(Client_Socket,Mes_Buf,BUF_SIZE,0))   {    puts("Client is desconnected!");    break;   }   printf("Client: %s\n",Mes_Buf);  }   close(Server_Socket);   return 0; }  123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107

Client.c

 #include #include #include #include #include  #include   #define IPADDRESS "127.0.0.1" #define PORT 8848 #define BUF_SIZE 1024    void* RecvMes_Thread(void* Arg) {    int* Client_Socket=(int*)Arg;   char Mes_Buf[BUF_SIZE]={0};  while(1)  {   if(0==recv(*Client_Socket,Mes_Buf,BUF_SIZE,0))   {    perror("Server is disconnected!");    break;   }   printf("Server: %s\n",Mes_Buf);  }   close(*Client_Socket);  return NULL; }   int main(int Argc,char** Argv) {    //创建客户端套接字  int Client_Socket=socket(AF_INET,SOCK_STREAM,0);  if(-1==Client_Socket)  {   perror("Client socket creation failed!");   return -1;  }  printf("Client_Socket==%d\n",Client_Socket);    //设置服务器网络信息  struct sockaddr_in Server_NetInfo={0};  Server_NetInfo.sin_family=AF_INET;  Server_NetInfo.sin_addr.s_addr=inet_addr(IPADDRESS);  Server_NetInfo.sin_port=htons(PORT);   //连接服务器  if(-1==connect(Client_Socket,(const struct sockaddr*)&Server_NetInfo,sizeof(struct sockaddr_in)))  {   perror("Connecting failure!");   return -1;  }   pthread_t Thread_ID=-1;  if(0==pthread_create(&Thread_ID,NULL,RecvMes_Thread,(void*)&Client_Socket))  {   puts("Create thread failed!");  }   char Mes_Buf[BUF_SIZE]={0};   while(1)  {   scanf("%s",Mes_Buf);   if(-1==send(Client_Socket,Mes_Buf,strlen(Mes_Buf)+1,0))   {    perror("Sending failure!");    break;   }   bzero(Mes_Buf,BUF_SIZE);  }   close (Client_Socket);   return 0; }

感谢各位的阅读,以上就是"Linux怎么实现TCP双向通信"的内容了,经过本文的学习后,相信大家对Linux怎么实现TCP双向通信这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

通信 双向 服务器 服务 信息 套接字 客户 网络 学习 内容 双方 同时 客户端 消息 就是 思路 情况 文章 方法 更多 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 阿里云服务器数据库有备份吗 软件开发合同范本(详细) 延庆区网络软件开发包括什么 火电厂网络安全组织机构 cors系统软件开发 北京哪家软件开发培训机构好 网络安全的稿子100字 数据库连接对象全局变量 数据库中的数据表如何建立 怎样才能加强网络安全 天津软件开发前景 泰州跑腿app软件开发费用 北辰区电子网络技术答疑解惑 网络安全的正确理解是 学校网络安全保卫部 计算机网络安全测评师 河北服务器光模块虚拟主机 制作网页一定要主机或者服务器吗 xshell怎么连数据库服务器 甲方和软件开发 天津服务器磁盘阵列卡驱动云空间 河东软件开发自学课程在线学习 软件开发项目简化合同 安徽网络技术服务销售价格 网络安全教育知识讲座内容 网络安全 感想体会 班马网络技术有限公司 米罗蒂奇数据库 发起get请求可以修改数据库吗 涉密系统软件开发 新华三
0