
socket多线程实现tcp server
发布日期:2021-05-08 02:50:07
浏览次数:11
分类:精选文章
本文共 1030 字,大约阅读时间需要 3 分钟。
#include#include #include #include #include #include #include #include #include int InitSocket(){ int sockfd=socket(AF_INET,SOCK_STREAM,0); if(sockfd==-1)return -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=bind(sockfd,(struct sockaddr*)&saddr,sizeof(saddr)); if(res==-1)return -1; listen(sockfd,5); if(res==-1)return -1; return sockfd;}void*fun(void*arg){ int c=(int)arg; while(1) { char buff[128]={ 0}; if(recv(c,buff,127,0)<=0) { break; } printf("recv(%d)=%s\n",c,buff); send(c,"ok",2,0); } printf("a client is connected(%d)\n",c); close(c);}int main(){ struct sockaddr_in caddr; int sockfd=InitSocket(); assert(sockfd!=-1); while(1) { int len=sizeof(caddr); int c=accept(sockfd,(struct sockaddr*)&caddr,&len); if(c<0) { continue; } printf("accept c=%d\n",c); pthread_t id; pthread_create(&id,NULL,fun,(void*)c); } close(sockfd); exit(0);}
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年03月19日 00时10分05秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
JVM 参数默认值查询
2021-05-08
异常的继承结构
2021-05-08
SVN 和 Git 区别
2021-05-08
JDK 内置的多线程协作工具类的使用场景
2021-05-08
Java 源代码到运行的过程
2021-05-08
Java 中哪些对象可以获取类对象
2021-05-08
linux 的 cp 命令如何复制不提示覆盖
2021-05-08
缓存穿透 / 缓存击穿 / 缓存雪崩 / 缓存一致性
2021-05-08
linux 的 pwd 命令
2021-05-08
linux 的 sleep 命令
2021-05-08
js 的 let var const 区别
2021-05-08
无线掌上B超USONIX-R6线阵B模图像初步
2021-05-08
无线掌上B超USONIX-R6凸阵B模图像初步
2021-05-08
react路由使用以及封装
2021-05-08
vue计算属性和监听器区别
2021-05-08
前端常用知识随手记
2021-05-08
11.2.6 时间值的小数秒
2021-05-08
11.2.7 日期和时间类型之间的转换
2021-05-08
附录 B 错误信息和常见问题
2021-05-08
redis 内存溢出_从数据存储的角度告诉你Redis为什么这么快!
2021-05-08