VC+Socket 网络通讯示例

Cpp代码 收藏代码
  1. VC+Socket网络通讯示例收藏
  2. 服务器端示例代码
  3. #include<stdio.h>
  4. #include<winsock.h>
  5. #include<windows.h>
  6. #defineSERVER_SOCKET_ERROR1
  7. #defineSOCKET_OK0
  8. #pragmacomment(lib,"wsock32.lib")
  9. voidsocketError(char*);
  10. intWINAPIWinMain(HINSTANCEhInst,HINSTANCEhPrevInstance,
  11. LPSTRlpCmdLine,intnShow)
  12. {
  13. WORDsockVersion;
  14. WSADATAwsaData;
  15. intrVal;
  16. sockVersion=MAKEWORD(1,1);
  17. //startdll
  18. WSAStartup(sockVersion,&wsaData);
  19. //createsocket
  20. SOCKETs=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);
  21. if(s==INVALID_SOCKET)
  22. {
  23. socketError("Failedsocket()");
  24. WSACleanup();
  25. returnSERVER_SOCKET_ERROR;
  26. }
  27. //fillinsockaddr_instruct
  28. SOCKADDR_INsin;
  29. sin.sin_family=PF_INET;
  30. sin.sin_port=htons(8888);
  31. sin.sin_addr.s_addr=INADDR_ANY;
  32. //bindthesocket
  33. rVal=bind(s,(LPSOCKADDR)&sin,sizeof(sin));
  34. if(rVal==SOCKET_ERROR)
  35. {
  36. socketError("Failedbind()");
  37. WSACleanup();
  38. returnSERVER_SOCKET_ERROR;
  39. }
  40. //getsockettolisten
  41. rVal=listen(s,2);
  42. if(rVal==SOCKET_ERROR)
  43. {
  44. socketError("Failedlisten()");
  45. WSACleanup();
  46. returnSERVER_SOCKET_ERROR;
  47. }
  48. //waitforaclient
  49. SOCKETclient;
  50. client=accept(s,NULL,NULL);
  51. if(client==INVALID_SOCKET)
  52. {
  53. socketError("Failedaccept()");
  54. WSACleanup();
  55. returnSERVER_SOCKET_ERROR;
  56. }
  57. //closeprocess
  58. closesocket(client);
  59. closesocket(s);
  60. WSACleanup();
  61. returnSOCKET_OK;
  62. };
  63. voidsocketError(char*str)
  64. {
  65. MessageBox(NULL,str,"SOCKETERROR",MB_OK);
  66. };
  67. 客户端示例代码
  68. #include<windows.h>
  69. #include<winsock.h>
  70. #pragmacomment(lib,"wsock32.lib")
  71. #defineCS_ERROR1
  72. #defineCS_OK0
  73. voidsError(char*);
  74. intWINAPIWinMain(HINSTANCEhHinst,HINSTANCEhPrevHinst,LPSTRlpCmdLine,
  75. intnShow)
  76. {
  77. WORDversion;
  78. WSADATAwsaData;
  79. intrVal=0;
  80. version=MAKEWORD(1,1);
  81. WSAStartup(version,(LPWSADATA)&wsaData);
  82. LPHOSTENThostEntry;
  83. //storeinformationabouttheserver
  84. hostEntry=gethostbyname("hibbert");
  85. if(!hostEntry)
  86. {
  87. sError("Failedgethostbyname()");
  88. //WSACleanup();
  89. returnCS_ERROR;
  90. }
  91. //createthesocket
  92. SOCKETtheSocket=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);
  93. if(theSocket==SOCKET_ERROR)
  94. {
  95. sError("Failedsocket()");
  96. returnCS_ERROR;
  97. }
  98. //Fillinthesockaddr_instruct
  99. SOCKADDR_INserverInfo;
  100. serverInfo.sin_family=PF_INET;
  101. serverInfo.sin_addr=*((LPIN_ADDR)*hostEntry->h_addr_list);
  102. serverInfo.sin_port=htons(8888);
  103. rVal=connect(theSocket,(LPSOCKADDR)&serverInfo,sizeof(serverInfo));
  104. if(rVal==SOCKET_ERROR)
  105. {
  106. sError("Failedconnect()");
  107. returnCS_ERROR;
  108. }
  109. closesocket(theSocket);
  110. WSACleanup();
  111. MessageBox(NULL,"Connectionwasmade","SOCKET",MB_OK);
  112. returnCS_OK;
  113. }
  114. voidsError(char*str)
  115. {
  116. MessageBox(NULL,str,"SOCKETERROR",MB_OK);
  117. WSACleanup();
  118. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值