18,356
社区成员
发帖
与我相关
我的任务
分享
4.void main()
5.{
6. WORD wVersionRequested;
7. WSADATA wsaData;
8. int err;
9.
10. wVersionRequested = MAKEWORD( 1, 1 ); //socket1.1版本
11.
12. err = WSAStartup( wVersionRequested, &wsaData ); //初始化socket环境
13. if ( err != 0 ) {
14. return;
15. }
16.
17.
18. if ( LOBYTE( wsaData.wVersion ) != 1 ||
19. HIBYTE( wsaData.wVersion ) != 1 ) {
20. WSACleanup( );
21. return;
22. }
23. SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0); //生成实例
24.
25. SOCKADDR_IN addrSrv; //需要连接的服务端地址
26. addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1"); //ip地址
27. addrSrv.sin_family=AF_INET; //地址族
28. addrSrv.sin_port=htons(6000); //端口
29. connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); //连接
30.
31. char recvBuf[100];
32. recv(sockClient,recvBuf,100,0); //接受服务端数据(同步模型下,造成线程阻塞)
33. printf("%s\n",recvBuf);
34. send(sockClient,"This is lisi",strlen("This is lisi")+1,0);
35.
36. closesocket(sockClient); //关闭socket
37. WSACleanup(); //清理环境
38.}
1.void main()
2.{
3. WORD wVersionRequested;
4. WSADATA wsaData;
5. int err;
6.
7. wVersionRequested = MAKEWORD( 1, 1 ); //使用socket1.1版本
8.
9. err = WSAStartup( wVersionRequested, &wsaData ); //初始化socket通信环境
10. if ( err != 0 ) {
11. return;
12. }
13.
14.
15. if ( LOBYTE( wsaData.wVersion ) != 1 ||
16. HIBYTE( wsaData.wVersion ) != 1 ) {
17. WSACleanup( ); //清理
18. return;
19. }
20. SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0); //使用TCP/IP协议和流式传输生成一个socket
21.
22. SOCKADDR_IN addrSrv; //为服务器端socket绑定地址
23. addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY); //0,0,0,0 监听本电脑上的所有IP地址,如果有多网卡,则同时监听多网卡
24. addrSrv.sin_family=AF_INET; //地址族
25. addrSrv.sin_port=htons(6000); //6000端口
26.
27. bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); //绑定
28.
29. listen(sockSrv,5); //是sockSrv保持监听状态,同时最多允许5个客户端连接
30.
31. SOCKADDR_IN addrClient;
32. int len=sizeof(SOCKADDR);
33.
34. while(1)
35. {
36. SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len); //接受客户端连接(使用同步模型,在没有客户端连接的情况下,阻塞本线程)
37. char sendBuf[100];
38. sprintf(sendBuf,"Welcome %s to http://www.sunxin.org",
39. inet_ntoa(addrClient.sin_addr)); //addrClient.sin_addr指明了客户端的IP
40. send(sockConn,sendBuf,strlen(sendBuf)+1,0); //发送信息给客户端
41. char recvBuf[100];
42. recv(sockConn,recvBuf,100,0); //接受客户端回应
43. printf("%s\n",recvBuf);
44. closesocket(sockConn); //关闭socket
45. }
WSACleanUp();//清理
46.}