多线程并发服务器

#include<myhead.h>

#define SERIP "192.168.0.161"

#define SERPORT 9999

#define listensize 10

typedef struct

{

int newsocket;

struct sockaddr_in cln;

}Ccln;

void *trans(void*arg)

{

Ccln *cln = (Ccln*)arg;

char buff1024;

while(1)

{

memset(buff,0,sizeof(buff));

//6.1 recv send

int len =recv(cln->newsocket,buff,sizeof(buff),0);

if(len == 0)

{

printf("客户端退出\n");

break;

}

printf("收到来自%s:%d客户端的信息:%s\n",inet_ntoa(cln->cln.sin_addr),ntohs(cln->cln.sin_port),buff);

strcat(buff,"1");

send(cln->newsocket,buff,sizeof(buff),0);

//6.2 p_exit

pthread_exit(NULL);

}

}

int main(int argc, const char *argv\[\])

{

//1,socket

int oldsocket = socket(AF_INET,SOCK_STREAM,0);

if(oldsocket==-1)

{

perror("socket");

return -1;

}

//2.setsockopt

int k=1;

if(setsockopt(oldsocket,SOL_SOCKET,SO_REUSEADDR,&k,sizeof(k))==-1)

{

perror("setsockopt");

return -1;

}

printf("设置复用端口成功\n");

//3.bind

struct sockaddr_in sln={

.sin_family=AF_INET,

.sin_addr = inet_addr(SERIP),

.sin_port = htons(SERPORT)

};

if(bind(oldsocket,(struct sockaddr*)&sln,sizeof(sln))==-1)

{

perror("bind");

return -1;

}

//4.listen

if(listen(oldsocket,listensize)==-1)

{

perror("listen");

return -1;

}

//5.accept in circle

struct sockaddr_in cln;

int clnlen =sizeof(cln);

while(1)

{

int newsocket = accept(oldsocket,(struct sockaddr*)&cln,&clnlen);

if(newsocket==-1)

{

perror("accept");

return -1;

}

printf("%s:%d发出请求连接\n",inet_ntoa(cln.sin_addr),ntohs(cln.sin_port));

//6.p_create

Ccln clninfo;

clninfo.newsocket = newsocket;

clninfo.cln = cln;

pthread_t tid;

if(pthread_create(&tid,NULL,trans,&clninfo)!=0)

{

perror("pthread_create");

return -1;

}

printf("发送成功\n");

//7.p_detach

pthread_detach(tid);

}

//8.close

close(oldsocket);

return 0;

}

相关推荐
北风toto3 小时前
扩展操作码技术 · 详细笔记
运维·服务器·笔记·软件设计师
笑霸final4 小时前
不用上传服务器!用 Vue3 + ONNX Runtime Web 在浏览器本地实现智能抠图
运维·前端·图像处理·ai·onnx·canva可画·web性能优化
鹿角片ljp4 小时前
LeetCode 141. 环形链表|从 HashSet 到快慢指针 O (1) 空间最优解
算法·leetcode·链表
2601_962218474 小时前
万象生鲜系统跨仓调拨算法助力生鲜企业供应链数字化协同运营
大数据·运维·微服务·云原生·架构
薛定e的猫咪4 小时前
(NeurIPS 2022)GraphGPS:MPNN 与全局注意力的融合之道
人工智能·深度学习·学习·算法
AI服务老曹5 小时前
车牌识别算法接入AI视频分析平台的流程和误报优化
人工智能·算法·音视频
2601_962218475 小时前
万象生鲜系统多仓协同同步技术支撑生鲜企业多仓模式数字化转型
大数据·运维·微服务·云原生·架构
mooooooooooye5 小时前
SSH 工具越用越乱,Xterminal 先清掉这三类失效连接
运维·ssh·github
qetfw5 小时前
Debian lftp FTP 客户端使用:登录、目录切换与文件传输
linux·运维·debian
神威难绷泪5 小时前
Linux应用软件编程:线程分离属性 互斥机制 同步机制 死锁
linux·开发语言·算法·线程