资源描述:
《socket套接字的使用》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、socket套接字的使用socket服务器端和客户端通信,面向TCP的服务器端步骤:1、创建用于监听的套接字(socket)2、将套接字绑定到本地地址和端口上(bind)3、将套接字设为监听模式(listen)4、等待客户请求(accept),此处要不断的调用accept5、通信(send/receive),完成后返回46、关闭套接字(closesocket) 客户端步骤:1、创建套接字2、向服务器发送连接请求(connect)3、通信(send/recv)4、关闭套接字 程序代码:服务器端:?123#include#include#pragmaco
2、mment(lib,"Ws2_32.lib.")4567891011121314151617181920212223242526272829303132333435363738394041424344454647 voidmain(){ /*加载套接字库*/ WORDwVersionRequested; //所使用套接字的版本号 WSADATAwsaData; //存储套接字版本的有关信息 interr; wVersionRequested=MAKEWORD(1,1); //请求版本号,高位和低位字节均为1 err=WSAS
3、tartup(wVersionRequested,&wsaData); //加载套接字 if(err!=0) { return; } if(LOBYTE(wsaData.wVersion)!=1
4、
5、 HIBYTE(wsaData.wVersion)!=1) { WSACleanup(); //如果高位或低位字节不为1终止对套接字的使用 return; } /*创建用于监听的套接字*/ SOCKETsockSrv=socket(AF_INET,SOCK_STREA
6、M,0); //创建套接字,流式套接字,第三个参数设为0则自动选择合适的协议 /*绑定套接字*/ SOCKADDR_INaddrSrv; //服务器地址信息,使用SOCKADDR_IN代替SOCKETADD,结构体的大小相等,可强制转换 addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY); addrSrv.sin_family=AF_INET; addrSrv.sin_port=htons(600); //使用htons函数转换为网络字节序 bind(sockSrv,(SOCKAD
7、DR*)&addrSrv,sizeof(SOCKADDR));48495051525354555657585960616263646566676869 //将监听套接字绑定到本地地址和端口上 listen(sockSrv,5); //监听 /*等待客户到来并接收发送数据*/ SOCKADDR_INaddrClient; //接收客户地址信息缓冲区 intlen=sizeof(SOCKADDR); while(1){ SOCKETsockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&
8、len); //等待接收客户连接请求,并返回连接套接字,利用这个套接字实现通信 charsendBuf[100]; sprintf(sendBuf,"Welcome%stowww.cnblogs.com/xiao-cheng", inet_ntoa(addrClient.sin_addr)); send(sockConn,sendBuf,strlen(sendBuf)+1,0); //发送数据,多加一个长度是字符串结束符 charrecvBuf[100]; recv(soc
9、kConn,recvBuf,100,0); //接收数据 printf("%s",recvBuf); closesocket(sockConn); }}?1客户端:?1234567891011#include#include#pragmacomment(lib,"Ws2_32.lib.") voidmain(){