基于C++的socket通信实例.docx_第1页
基于C++的socket通信实例.docx_第2页
基于C++的socket通信实例.docx_第3页
基于C++的socket通信实例.docx_第4页
基于C++的socket通信实例.docx_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

刚刚学windows编程,所以想写学习笔记,这是一个简单的Socket程序例子,开发环境是vc6:首先是TCPserver端:cppview plaincopy1. #includestdafx.h2. #include3. #include4. 5. #pragmacomment(lib,ws2_32.lib)6. 7. intmain(intargc,char*argv)8. 9. /初始化WSA10. WORDsockVersion=MAKEWORD(2,2);11. WSADATAwsaData;12. if(WSAStartup(sockVersion,&wsaData)!=0)13. 14. return0;15. 16. 17. /创建套接字18. SOCKETslisten=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);19. if(slisten=INVALID_SOCKET)20. 21. printf(socketerror!);22. return0;23. 24. 25. /绑定IP和端口26. sockaddr_insin;27. sin.sin_family=AF_INET;28. sin.sin_port=htons(8888);29. sin.sin_addr.S_un.S_addr=INADDR_ANY;30. if(bind(slisten,(LPSOCKADDR)&sin,sizeof(sin)=SOCKET_ERROR)31. 32. printf(binderror!);33. 34. 35. /开始监听36. if(listen(slisten,5)=SOCKET_ERROR)37. 38. printf(listenerror!);39. return0;40. 41. 42. /循环接收数据43. SOCKETsClient;44. sockaddr_inremoteAddr;45. intnAddrlen=sizeof(remoteAddr);46. charrevData255;47. while(true)48. 49. printf(等待连接.n);50. sClient=accept(slisten,(SOCKADDR*)&remoteAddr,&nAddrlen);51. if(sClient=INVALID_SOCKET)52. 53. printf(accepterror!);54. continue;55. 56. printf(接受到一个连接:%srn,inet_ntoa(remoteAddr.sin_addr);57. 58. /接收数据59. intret=recv(sClient,revData,255,0);60. if(ret0)61. 62. revDataret=0x00;63. printf(revData);64. 65. 66. /发送数据67. char*sendData=你好,TCP客户端!n;68. send(sClient,sendData,strlen(sendData),0);69. closesocket(sClient);70. 71. 72. closesocket(slisten);73. WSACleanup();74. return0;75. client端:cppview plaincopy1. #includestdafx.h2. #include3. #include4. 5. #pragmacomment(lib,ws2_32.lib)6. 7. 8. intmain(intargc,char*argv)9. 10. WORDsockVersion=MAKEWORD(2,2);11. WSADATAdata;12. if(WSAStartup(sockVersion,&data)!=0)13. 14. return0;15. 16. 17. SOCKETsclient=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);18. if(sclient=INVALID_SOCKET)19. 20. printf(invalidsocket!);21. return0;22. 23. 24. sockaddr_inserAddr;25. serAddr.sin_family=AF_INET;26. serAddr.sin_port=htons(8888);27. serAddr.sin_addr.S_un.S_addr=inet_addr(127.0.0.1);28. if(connect(sclient,(sockaddr*)&serAddr,sizeof(serAddr)=SOCKET_ERROR)29. 30. printf(connecterror!);31. closesocket(sclient);32. return0;33. 34. char*sendData=你好,TCP服务端,我是客户端!n;35. send(sclient,sendData,strlen(sendData),0);36. 37. charrecData255;38. intret=recv(sclient,recData,255,0);39. if(ret0)40. 41. recDataret=0x00;42. printf(recData);43. 44. closesocket(sclient);45. WSACleanup();46. return0;47. 然后是UDPserver端:cppview plaincopy1. #includestdafx.h2. #include3. #include4. 5. #pragmacomment(lib,ws2_32.lib)6. 7. intmain(intargc,char*argv)8. 9. WSADATAwsaData;10. WORDsockVersion=MAKEWORD(2,2);11. if(WSAStartup(sockVersion,&wsaData)!=0)12. 13. return0;14. 15. 16. SOCKETserSocket=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);17. if(serSocket=INVALID_SOCKET)18. 19. printf(socketerror!);20. return0;21. 22. 23. sockaddr_inserAddr;24. serAddr.sin_family=AF_INET;25. serAddr.sin_port=htons(8888);26. serAddr.sin_addr.S_un.S_addr=INADDR_ANY;27. if(bind(serSocket,(sockaddr*)&serAddr,sizeof(serAddr)=SOCKET_ERROR)28. 29. printf(binderror!);30. closesocket(serSocket);31. return0;32. 33. 34. sockaddr_inremoteAddr;35. intnAddrLen=sizeof(remoteAddr);36. while(true)37. 38. charrecvData255;39. intret=recvfrom(serSocket,recvData,255,0,(sockaddr*)&remoteAddr,&nAddrLen);40. if(ret0)41. 42. recvDataret=0x00;43. printf(接受到一个连接:%srn,inet_ntoa(remoteAddr.sin_addr);44. printf(recvData);45. 46. 47. char*sendData=一个来自服务端的UDP数据包n;48. sendto(serSocket,sendData,strlen(sendData),0,(sockaddr*)&remoteAddr,nAddrLen);49. 50. 51. closesocket(serSocket);52. WSACleanup();53. return0;54. client端:cppview plaincopy1. #includestdafx.h2. #include3. #include4. 5. #pragmacomment(lib,ws2_32.lib)6. 7. intmain(intargc,char*argv)8. 9. WORDsocketVersion=MAKEWORD(2,2);10. WSADATAwsaData;11. if(WSAStartup(socketVersion,&wsaData)!=0)12. 13. return0;14. 15. SOCKETsclient=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);16. 17. sockaddr_insin;18. sin.sin_family=AF_INET;19. sin.sin_port=htons(8888);20. sin.sin_addr.S_un.S_addr=inet_addr(127.0.0.1);21. intlen=sizeof(sin);22. 23. char*sendData=来自客户端的数据包.n;24. sendto(sclient,sendData,strlen(sendData),0,(sockaddr*)&sin,len

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论