已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 网络工程计算机专业实习报告册
- 2025河北医科大学第二医院公开招聘工作人员补充考试笔试备考题库及答案解析
- 《JBT9162.1-1999 平底表座尺寸》(2026年)实施指南
- 2025云南昭通绥江县民政局城镇公益性岗位招聘1人笔试考试备考试题及答案解析
- 2025年聊城市动物园招聘笔试考试参考题库及答案解析
- 2025年哲学面试题及答案
- 2025天津市河西公证处招聘公证员助理6人考试笔试模拟试题及答案解析
- 2025年招行面试题及答案
- 2026中国储备粮管理集团有限公司北京分公司招聘65人笔试考试参考试题及答案解析
- 部编版七年级上册数学期末试卷附带答案解析
- 广西柳州市2026届高三第一次模拟考试语文试题(含答案)
- 2025年企业文化主管岗位招聘面试参考题库及参考答案
- 2026年湖北国土资源职业学院单招综合素质考试必刷测试卷及答案1套
- 2025至2030中国玉米种植行业市场深度调研及供需规模及有效策略与实施路径评估报告
- 2025年化危为安考试题库及答案
- 电气仪表专业安全风险隐患排查重点-
- 矿山施工安全风险分级管理方案
- 2025年贵州省基层法律服务工作者执业核准考试卷附答案
- GB/T 31439.1-2025波形梁钢护栏第1部分:两波形梁钢护栏
- 2025年领导干部任前廉政知识测试题库(附答案)
- 2025年幼儿园教师专业理论考核试题及答案
评论
0/150
提交评论