博客
关于我
socket多线程实现tcp server
阅读量:364 次
发布时间:2019-03-05

本文共 1077 字,大约阅读时间需要 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"); if (bind(sockfd, (struct sockaddr *)&saddr, sizeof(saddr)) == -1) return -1; if (listen(sockfd, 5) == -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, (size_t*)&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);}

转载地址:http://qklg.baihongyu.com/

你可能感兴趣的文章
uni-app请求头中携带token
查看>>
常用的 Git 命令和小技巧(1)
查看>>
vue中接收后台的图片验证码并显示
查看>>
springboot入门(1)---整合MyBatis
查看>>
Vue入门学习笔记(1)
查看>>
趣谈win10常用快捷键
查看>>
数学建模(NO.18灰色预测)
查看>>
数学建模更新12(数学线性规划模型1)
查看>>
Android,SharedPreferences的使用
查看>>
JPEG压缩技术
查看>>
两款用于检测内存泄漏的软件
查看>>
王爽 《汇编语言》 读书笔记 三 寄存器(内存访问)
查看>>
IDEA出现问题:Received fatal alert: protocol_version 解决方案
查看>>
Airtest自动化测试 Docs airtest.core.android package
查看>>
SVN Unable to connect to a repository at URL 的解决方案
查看>>
Android基本知识
查看>>
命令模式【Command Pattern】
查看>>
OSI 7 层网络模型
查看>>
JDK 内置的多线程协作工具类的使用场景
查看>>
Java 中哪些对象可以获取类对象
查看>>