全部評論(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
370
1
- 求C語言編寫的計時器源代碼
- 急需一打字游戲的計時器源代碼,C語言編寫。
2013-09-04 01:38:24
297
2
- 剛學習數(shù)據(jù)庫,想練習一下SQL語言,下載什么軟件?
2014-04-09 03:38:14
379
3
- c語言寫的計時器
2016-09-10 21:55:59
464
1
- 全國Z好的即時通訊軟件是哪個?
2017-02-15 07:00:52
311
3
- 蘇州這邊哪里可以學習平面設計的軟件的?Z近想學習一下軟件工作要用?
2017-12-14 00:26:47
343
2
- 想從事數(shù)據(jù)分析工作,學什么軟件或語言Z好
2017-08-15 00:18:27
395
3
- 想從事數(shù)據(jù)分析工作,學什么軟件或語言Z好
2016-08-09 00:54:44
363
4
- 想從事數(shù)據(jù)分析工作,學什么軟件或語言Z好
2017-09-28 02:07:15
432
1
- 易語言寫即時通訊軟件(類似QQ)~ 求個源碼
2016-10-21 11:53:24
437
2
- 介紹一個Z好的 Z好的開源即時通訊軟件
- 大家好,請問有沒人喜歡做IM開發(fā)的,請推薦一個Z好的開源即時通訊軟件,謝謝。... 大家好,請問有沒人喜歡做IM開發(fā)的,請推薦一個Z好的開源即時通訊軟件,謝謝。 展開
2011-01-07 00:15:56
452
4
- Z好用的C語言編程軟件是哪個
2016-12-13 17:13:17
459
1
- 學習LabVIEW對c語言的要求多高
2013-08-11 12:58:52
355
4
- 求C語言計時器的例子
- 我想為執(zhí)行某個功能建立一個計時器。比如說,當A功能開始時,A計時器開始計時,當A功能結束時,A計時器結束計時,將A執(zhí)行的時間返回給我,這樣的計時器該怎么寫?
2011-11-29 00:21:26
642
2
- 學C語言用哪個編程軟件Z好? 急
- 有的話,請E--mial給我! 252037697,謝謝了
2012-02-06 06:55:12
403
4
- 急?。。。。。。。☆}目是寫一個溫度傳感器的C語言程序
- 傳感器由電位器模擬電位器連接于模數(shù)轉換器通道1(PAD0)。此模數(shù)轉換器ATD0是10bits并在0-2.55V的電壓之間變化。當外界溫度0度時電壓為0。溫度102.3度時電壓2.55v。Z后把攝氏溫度輸... 傳感器由電位器模擬 電位器連接于模數(shù)轉換器通道1(PAD0)。此模數(shù)轉換器ATD0是10bits 并在0-2.55V的電壓之間變化。當外界溫度0度時電壓為0。溫度102.3度時電壓2.55v。Z后把攝氏溫度輸出在LCD上每秒溫度刷新一次 用(tempo_n(xx))) 問題補充: 要通過hc12芯片 展開
2011-04-06 15:57:57
409
2
- Z安全的企業(yè)即時通訊軟件?
2016-12-15 04:57:36
396
3
- C語言編程是在什么軟件上編
2016-11-15 07:26:57
512
2
- 企業(yè)即時通訊軟件哪家好?
2016-06-28 12:19:20
371
1
- c語言編程軟件vc6.0怎么打開軟件
2013-10-14 07:18:36
507
1
4月突出貢獻榜
推薦主頁
最新話題





參與評論
登錄后參與評論