全部评论(1条)
-
- 762488155 2016-01-26 00:00:00
- #pragma comment(lib,"ws2_32.lib") #include<winsock2.h> #include<stdio.h> #include<string.h> #include<windows.h> #include<PROCESS.H> void _cdecl get_keyboard_input(void * param) { SOCKET sock =(SOCKET)param; while(1) { char buf[1024]; gets(buf); int sByte = send(sock,buf,strlen(buf),0); if(sByte == SOCKET_ERROR) { printf("send() failed:%d\n",WSAGetLastError()); } } } int main() { WSADATA wsadata; int err = WSAStartup(WINSOCK_VERSION,&wsadata); if(err != 0) { printf("WSAStartup() failed :%d\n",WSAGetLastError()); return -1; } SOCKET sock = socket(AF_INET,SOCK_STREAM,0); if(sock == INVALID_SOCKET) { printf("socket() failed:%d\n",WSAGetLastError()); WSACleanup(); return -1; } sockaddr_in serveraddr; serveraddr.sin_family = AF_INET; serveraddr.sin_port = htons(27015); serveraddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); err=connect(sock,(sockaddr *)&serveraddr,sizeof(serveraddr)); if(err == INVALID_SOCKET) { printf("connect() failed:%d\n",WSAGetLastError()); closesocket(sock); WSACleanup(); return -1; } _beginthread(get_keyboard_input,0,(void*)sock); Sleep(1000); char rbuf[1024]; while(1) { memset(rbuf,0,1024); int rByte =recv(sock,rbuf,1024,0); if(rByte == SOCKET_ERROR) { printf("recv() failed:%d\n",WSAGetLastError()); closesocket(sock); WSACleanup(); return -1; } if(rByte == 0) { printf("Connection is closed.\n"); break; } printf("TCP recv DATA:%s\n",rbuf); Sleep(1000); } closesocket(sock); WSACleanup(); return 0; } 服务端: #pragma comment(lib,"ws2_32.lib") #include<winsock2.h> #include<stdio.h> #include<string.h> #define MAX_CLIENT_NUM 63 int main() { WSADATA wsadata; int err = WSAStartup(WINSOCK_VERSION,&wsadata); if(err != 0) { printf("WSAStartup() failed :%d\n",WSAGetLastError()); return -1; } SOCKET sock = socket(AF_INET,SOCK_STREAM,0); if(sock == INVALID_SOCKET) { printf("socket() failed:%d\n",WSAGetLastError()); WSACleanup(); return -1; } sockaddr_in localaddr; localaddr.sin_family = AF_INET; localaddr.sin_port = htons(27015); localaddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY); err = bind(sock,(sockaddr *)&localaddr,sizeof(localaddr)); if(err == INVALID_SOCKET) { printf("bind() failed:%d\n",WSAGetLastError()); closesocket(sock); WSACleanup(); return -1; } err=listen(sock,5); if(err == INVALID_SOCKET) { printf("listen() failed:%d\n",WSAGetLastError()); closesocket(sock); WSACleanup(); return -1; } SOCKET client[MAX_CLIENT_NUM]; for(int i = 0;i<MAX_CLIENT_NUM;i++) { client[i] = INVALID_SOCKET; } fd_set rset,allset; FD_ZERO(&allset); FD_SET(sock,&allset); #define MSG_MAX_SIZE 1024 char buf[MAX_CLIENT_NUM][MSG_MAX_SIZE]; while(1) { rset = allset; int ret = select(0,&rset,NULL,NULL,NULL); if(ret == SOCKET_ERROR) { printf("select() failed:%ld\n",WSAGetLastError()); break; } if(ret == 0){ continue; } if(FD_ISSET(sock,&rset)) { sockaddr_in clientaddr; int len = sizeof(clientaddr); SOCKET sockconn = accept(sock,(sockaddr *)&clientaddr,&len); if(sockconn == INVALID_SOCKET) { printf("accept() failed:%d\n",WSAGetLastError()); break; } printf("Client's IP:%s\nClient's Port:%d\n",inet_ntoa(clientaddr.sin_addr),clientaddr.sin_port); for(i=0;i<MAX_CLIENT_NUM;i++) { if(client[i] == INVALID_SOCKET) { client[i] = sockconn; break; } } if(i<MAX_CLIENT_NUM) { FD_SET(sockconn,&allset); } else{ printf("too many client"); closesocket(sockconn); } } for(i=0;i<MAX_CLIENT_NUM;i++) { if((client[i]!=INVALID_SOCKET)&&FD_ISSET(client[i],&rset)) { memset(buf[i],0,MSG_MAX_SIZE); int rByte = recv(client[i],buf[i],MSG_MAX_SIZE,0); if(rByte == SOCKET_ERROR) { printf("recv() failed:%d\n",WSAGetLastError()); FD_CLR(client[i],&allset); closesocket(client[i]); client[i] = INVALID_SOCKET; continue; } if(rByte == 0) { printf("Connection is closed. "); FD_CLR(client[i],&allset); closesocket(client[i]); client[i] = INVALID_SOCKET; continue; } for(int j=0;j<MAX_CLIENT_NUM;j++) { if((client[j]!=INVALID_SOCKET) ) { int sByte = send(client[j],buf[i],1024,0); if(sByte == SOCKET_ERROR) { printf("send() failed:%d\n",WSAGetLastError()); } } } printf("TCP recv[%d]DATA:%s\n",rByte,buf[i]); } } } closesocket(sock); WSACleanup(); return 0; }
-
赞(19)
回复(0)
热门问答
- 求即时通讯软件源代码Z好是C语言写的,想学习一下,感谢各位
2016-01-25 11:12:49
317
1
- 求C语言编写的计时器源代码
- 急需一打字游戏的计时器源代码,C语言编写。
2013-09-04 01:38:24
244
2
- 刚学习数据库,想练习一下SQL语言,下载什么软件?
2014-04-09 03:38:14
341
3
- c语言写的计时器
2016-09-10 21:55:59
421
1
- 全国Z好的即时通讯软件是哪个?
2017-02-15 07:00:52
266
3
- 苏州这边哪里可以学习平面设计的软件的?Z近想学习一下软件工作要用?
2017-12-14 00:26:47
291
2
- 想从事数据分析工作,学什么软件或语言Z好
2017-08-15 00:18:27
355
3
- 想从事数据分析工作,学什么软件或语言Z好
2016-08-09 00:54:44
310
4
- 想从事数据分析工作,学什么软件或语言Z好
2017-09-28 02:07:15
372
1
- 易语言写即时通讯软件(类似QQ)~ 求个源码
2016-10-21 11:53:24
381
2
- 介绍一个Z好的 Z好的开源即时通讯软件
- 大家好,请问有没人喜欢做IM开发的,请推荐一个Z好的开源即时通讯软件,谢谢。... 大家好,请问有没人喜欢做IM开发的,请推荐一个Z好的开源即时通讯软件,谢谢。 展开
2011-01-07 00:15:56
402
4
- Z好用的C语言编程软件是哪个
2016-12-13 17:13:17
398
1
- 学习LabVIEW对c语言的要求多高
2013-08-11 12:58:52
304
4
- 求C语言计时器的例子
- 我想为执行某个功能建立一个计时器。比如说,当A功能开始时,A计时器开始计时,当A功能结束时,A计时器结束计时,将A执行的时间返回给我,这样的计时器该怎么写?
2011-11-29 00:21:26
586
2
- 学C语言用哪个编程软件Z好? 急
- 有的话,请E--mial给我! 252037697,谢谢了
2012-02-06 06:55:12
348
4
- 急啊!!!!!!!题目是写一个温度传感器的C语言程序
- 传感器由电位器模拟电位器连接于模数转换器通道1(PAD0)。此模数转换器ATD0是10bits并在0-2.55V的电压之间变化。当外界温度0度时电压为0。温度102.3度时电压2.55v。Z后把摄氏温度输... 传感器由电位器模拟 电位器连接于模数转换器通道1(PAD0)。此模数转换器ATD0是10bits 并在0-2.55V的电压之间变化。当外界温度0度时电压为0。温度102.3度时电压2.55v。Z后把摄氏温度输出在LCD上每秒温度刷新一次 用(tempo_n(xx))) 问题补充: 要通过hc12芯片 展开
2011-04-06 15:57:57
355
2
- Z安全的企业即时通讯软件?
2016-12-15 04:57:36
331
3
- C语言编程是在什么软件上编
2016-11-15 07:26:57
454
2
- 企业即时通讯软件哪家好?
2016-06-28 12:19:20
317
1
- c语言编程软件vc6.0怎么打开软件
2013-10-14 07:18:36
467
1
5月突出贡献榜
推荐主页
最新话题
-
- #DeepSeek如何看待仪器#
- 干体炉技术发展与应用研究
- 从-70℃到150℃:一台试验箱如何终结智能...从-70℃到150℃:一台试验箱如何终结智能调光膜失效风险?解决方案:SMC-210PF-FPC温湿度折弯试验箱的五大核心价值1. 多维度环境模拟,覆盖全生命周期测试需求超宽温域:支持-70℃至+150℃的极限温度模拟(可选配),复现材料在极寒、高温、冷热冲击下的性能表现;控湿:湿度范围20%~98%RH(精度±3%RH),模拟热带雨林、沙漠干燥等复杂工况,暴露材料吸湿膨胀、分层缺陷;动态折弯:0°~180°连续可调折弯角度,支持R1~R20弯曲半径设定,模拟实际装配中的微小应力,提前预警裂纹、断裂风险。
参与评论
登录后参与评论