LInux中利用线程实现多个客户端和服务器端进行通信
来源:互联网 发布:多益网络的薪资福利 编辑:程序博客网 时间:2024/05/17 00:52
上一篇博文讲了如何利用子进程实现多个客户端和服务器端进行通信,
那么,这一篇博客就来实现一下如何利用线程实现多个客户端和服务器端进行通信
代码实现:
ser1.c
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <assert.h>#include <unistd.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <pthread.h>void *fun(void *arg){int c = (int)arg;while(1){char buff[128] = {0};if(recv(c,buff,127,0) <= 0){break;}printf("buff = %s",buff);send(c,"OK",2,0);}close(c);pthread_exit(NULL);}int main(){int sockfd = socket(AF_INET,SOCK_STREAM,0);//tcpassert(sockfd != -1);struct sockaddr_in saddr,caddr;memset(&saddr,0,sizeof(saddr));saddr.sin_family = AF_INET;saddr.sin_port = htons(6000);saddr.sin_addr.s_addr = inet_addr("127.0.0.1");int res = bind(sockfd,(struct sockaddr*)&saddr,sizeof(saddr));assert(res != -1);listen(sockfd,5);while(1){int len = sizeof(caddr);int c = accept(sockfd,(struct sockaddr*)&caddr,&len);if(c < 0){continue;}printf("accept: c = %d,ip:%s,port:%d\n",c,inet_ntoa(caddr.sin_addr),ntohs(caddr.sin_port));pthread_t id;pthread_create(&id,NULL,fun,(void*)c);}}
cli1.c
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <assert.h>#include <unistd.h>#include <netinet/in.h>#include <sys/socket.h>#include <arpa/inet.h>int main(){int sockfd = socket(AF_INET,SOCK_STREAM,0);assert(sockfd != -1);struct sockaddr_in saddr;memset(&saddr,0,sizeof(saddr));saddr.sin_family = AF_INET;saddr.sin_port = htons(6000);saddr.sin_addr.s_addr = inet_addr("127.0.0.1");int res = connect(sockfd,(struct sockaddr*)&saddr,sizeof(saddr));assert(res != -1);while(1){printf("input :");char buff[128] = {0};fgets(buff,128,stdin);if(strncmp(buff,"end",3) == 0){break;}send(sockfd,buff,strlen(buff),0);memset(buff,0,128);recv(sockfd,buff,127,0);printf("buff = %s\n",buff);}close(sockfd);}
运行结果:
阅读全文
0 0
- LInux中利用线程实现多个客户端和服务器端进行通信
- Linux中利用子进程实现多个客户端和服务器端通信
- C++ Socket网络通信实现一个服务器端和多个客户端的通信
- 服务器端和android客户端通信 服务器端实现
- 利用rmi实现客户端与服务器端通信
- 使用fifo实现一个服务器端多个客户端通信
- 实现服务器端和客户端的Socket通信
- 客户端和服务器端通信
- 客户端和服务器端通信
- Linux Tcp客户端和服务器端代码实现
- 利用多线程进行多客户端通信
- Android中使用Socket来实现服务器端和客户端,进行数据通信(使用原生Socket)
- 用Socket实现客户端和服务器端通信(完整版)
- Socket实现客户端和服务器端的消息通信
- java-基本的Socket编程-实现服务器端和客户端通信
- Android通过Socket方式实现客户端和服务器端通信
- linux UDP 局域网内广播通信服务器端和客户端
- linux UDP 局域网内广播通信服务器端和客户端
- 学习RSA加密与解密、签名与认证
- Android手势密码
- 中层视觉:基于聚类的分割方法
- python中集成的Voronoi包
- eclipse android ndk 'JNIEnv' could not be resolved
- LInux中利用线程实现多个客户端和服务器端进行通信
- 关于Unicode
- int 和Integer的区别 以及应用场景
- 非常有趣的理解websocket
- 局部变量声明在函数外部不被访问
- 前端工程师的进阶之路
- 无人驾驶车道检测[C++]
- java自带的排序工具
- python(2) ---字符串函数