ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:16.06KB ,
资源ID:12052506      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12052506.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(socket编程.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

socket编程.docx

1、socket编程socket编程(udp tcp)代码备忘 C+/C socket编程(udp tcp)代码备忘 C+/Csockets(套接字)编程有三种,流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM),原始套接字(SOCK_RAW);基于TCP的socket编程是采用的流式套接字(SOCK_STREAM)。基于UDP采用的数据报套接字(SOCK_DGRAM).1.TCP流式套接字的编程步骤在使用之前须链接库函数:工程-设置-Link-输入ws2_32.lib,OK!服务器端程序:1、加载套接字库2、创建套接字(socket)。 3、将套接字绑定到一个本地地址和端

2、口上(bind)。4、将套接字设为监听模式,准备接收客户请求(listen)。5、等待客户请求到来;当请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字(accept)。6、用返回的套接字和客户端进行通信(send/recv)。7、返回,等待另一客户请求。8、关闭套接字。客户端程序:1、加载套接字库2、创建套接字(socket)。 3、向服务器发出连接请求(connect)。4、和服务器端进行通信(send/recv)。5、关闭套接字。socket-bind-listen-accept-send/recvsocket-connect-send/recvUDP socket-bind-

3、recvfromsocket-sendto服务器端代码如下:#include /加裁头文件#include /加载标准输入输出头文件void main()WORD wVersionRequested;/版本号WSADATA wsaData;int err;wVersionRequested = MAKEWORD( 1, 1 );/1.1版本的套接字err = WSAStartup( wVersionRequested, &wsaData );if ( err != 0 ) return;/加载套接字库,加裁失败则返回if ( LOBYTE( wsaData.wVersion ) != 1 |H

4、IBYTE( wsaData.wVersion ) != 1 ) WSACleanup( );return; /如果不是1.1的则退出SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);/创建套接字(socket)。SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);/转换Unsigned short为网络字节序的格式addrSrv.sin_family=AF_INET;addrSrv.sin_port=htons(6000);bind(sockSrv,(SOCKADDR*)

5、&addrSrv,sizeof(SOCKADDR);/将套接字绑定到一个本地地址和端口上(bind)listen(sockSrv,5);/将套接字设为监听模式,准备接收客户请求(listen)。SOCKADDR_IN addrClient;/定义地址族int len=sizeof(SOCKADDR);/初始化这个参数,这个参数必须被初始化while(1)SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);accept的第三个参数一定要有初始值。/等待客户请求到来;当请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字(

6、accept)。/此时程序在此发生阻塞char sendBuf100;sprintf(sendBuf,Welcome %s to http:/www.sunxin.org,inet_ntoa(addrClient.sin_addr);/用返回的套接字和客户端进行通信(send/recv)。send(sockConn,sendBuf,strlen(sendBuf)+1,0);char recvBuf100;recv(sockConn,recvBuf,100,0);printf(%sn,recvBuf);closesocket(sockConn);/关闭套接字。等待另一个用户请求客户端代码如下:#

7、include #include void main()WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD( 1, 1 );err = WSAStartup( wVersionRequested, &wsaData );加载套接字库if ( err != 0 ) return;if ( LOBYTE( wsaData.wVersion ) != 1 |HIBYTE( wsaData.wVersion ) != 1 ) WSACleanup( );return; SOCKET sockClient

8、=socket(AF_INET,SOCK_STREAM,0);创建套接字(socket)。SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr=inet_addr(127.0.0.1);addrSrv.sin_family=AF_INET;addrSrv.sin_port=htons(6000);connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR);向服务器发出连接请求(connect)。char recvBuf100;和服务器端进行通信(send/recv)。recv(sockClient,

9、recvBuf,100,0);printf(%sn,recvBuf);send(sockClient,This is lisi,strlen(This is lisi)+1,0);closesocket(sockClient);关闭套接字。WSACleanup();/必须调用这个函数清除参数2.UDP型套接字。服务器端(接收端)程序:1、创建套接字(socket)。 2、将套接字绑定到一个本地地址和端口上(bind)。3、等待接收数据(recvfrom)。4、关闭套接字。客户端(发送端)程序:1、创建套接字(socket)。 2、向服务器发送数据(sendto)。3、关闭套接字。socket-

10、bind-recvfromsocket-sendtotcp socket-bind-listen-accept-send/recvsocket-connect-send/recv服务器端代码:#include #include void main()WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD( 1, 1 );err = WSAStartup( wVersionRequested, &wsaData );if ( err != 0 ) return;if ( LOBYTE( wsaData

11、.wVersion ) != 1 |HIBYTE( wsaData.wVersion ) != 1 ) WSACleanup( );return; SOCKET sockSrv=socket(AF_INET,SOCK_DGRAM,0);SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);addrSrv.sin_family=AF_INET;addrSrv.sin_port=htons(6000);bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR);SOCKADDR_

12、IN addrClient;int len=sizeof(SOCKADDR);char recvBuf100;recvfrom(sockSrv,recvBuf,100,0,(SOCKADDR*)&addrClient,&len);printf(%sn,recvBuf);closesocket(sockSrv);WSACleanup();客户端代码:#include #include void main()WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD( 1, 1 );err = WSASta

13、rtup( wVersionRequested, &wsaData );if ( err != 0 ) return;if ( LOBYTE( wsaData.wVersion ) != 1 |HIBYTE( wsaData.wVersion ) != 1 ) WSACleanup( );return; SOCKET sockClient=socket(AF_INET,SOCK_DGRAM,0);SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr=inet_addr(127.0.0.1);addrSrv.sin_family=AF_INET;add

14、rSrv.sin_port=htons(6000);sendto(sockClient,Hello,strlen(Hello)+1,0,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR);closesocket(sockClient);WSACleanup();=下面是字符界面下的一个简单UDP聊天程序=服务器端:=#include #include void main()WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD( 1, 1 );err = WSAStartup(

15、 wVersionRequested, &wsaData );if ( err != 0 )return;if ( LOBYTE( wsaData.wVersion ) != 1 |HIBYTE( wsaData.wVersion ) != 1 )WSACleanup( );return; SOCKET sockSrv=socket(AF_INET,SOCK_DGRAM,0);SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);addrSrv.sin_family=AF_INET;addrSrv.sin_port

16、=htons(6101);bind(sockSrv,(sockaddr*)&addrSrv,sizeof(sockaddr);char sendBuf100;char recvBuf100;char tempBuf100;int len=sizeof(sockaddr);SOCKADDR_IN addrClient;while(1)recvfrom(sockSrv,tempBuf,strlen(tempBuf),0,(sockaddr*)&addrClient,&len);if(q!=tempBuf0)sprintf(recvBuf,%s say: %s,inet_ntoa(addrClien

17、t.sin_addr),tempBuf);printf(%sn,recvBuf);printf(please input your data: );gets(sendBuf);sendto(sockSrv,sendBuf,strlen(sendBuf)+1,0,(sockaddr*)&addrClient,len);elseprintf(%s request to quit the chat platform.n,inet_ntoa(addrClient.sin_addr);sendto(sockSrv,q,strlen(q)+1,0,(sockaddr*)&addrClient,len);b

18、reak;closesocket(sockSrv);WSACleanup();客户端:=#include #include void main()WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD( 1, 1 );err = WSAStartup( wVersionRequested, &wsaData );if ( err != 0 )return;if ( LOBYTE( wsaData.wVersion ) != 1 |HIBYTE( wsaData.wVersion ) != 1 )WS

19、ACleanup( );return; SOCKET sockClient=socket(AF_INET,SOCK_DGRAM,0);SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr=inet_addr(127.0.0.1);/htonl htons inet_addr inet_ntoaaddrSrv.sin_family=AF_INET;addrSrv.sin_port=htons(6101);char sendBuf100;char tempBuf100;char recvBuf100;int len=sizeof(sockaddr);wh

20、ile(1)printf(please input your data: );gets(sendBuf);sendto(sockClient,sendBuf,strlen(sendBuf)+1,0,(sockaddr*)&addrSrv,len);recvfrom(sockClient,tempBuf,strlen(tempBuf),0,(sockaddr*)&addrSrv,&len);if(q!=tempBuf0)sprintf(recvBuf,%s say: %s,inet_ntoa(addrSrv.sin_addr),tempBuf);printf(%sn,recvBuf);elseprintf(the server has been closed!n);sendto(sockClient,q,strlen(q)+1,0,(sockaddr*)&addrSrv,len);break;closesocket(sockClient);WSACleanup();

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1