资源描述:
《数据报套接字编程.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验七数据报套接字编程程序流程客户端代码/*************************************************************************调试环境:VC++6.0程序名称:client.cpp客户端IP地址和端口:由系统指定程序功能:①客户端程序向服务器发送数据"Hello!Iamaclient.";②客户端程序从服务器接收数据并进行显示命令格式:client[服务器IP地址]命令举例:client192.168.0.1说明:上面设要给IP地址为192.168.
2、0.1、端口号为5050的服务器发送数据**************************************************************************/#include#include//将ws2_32.lib库加入到工程中进行编译#pragmacomment(lib,"ws2_32.lib")//服务器端口号为5050#defineDEFAULT_PORT5050//缓冲区长度#defineDATA_BUFFER1024客户端代码
3、voidmain(intargc,char*argv[]){WSADATAwsaData;SOCKETsClient;intiPort=5050;//服务器地址长度intiLen;//接收数据的缓冲intiSend;intiRecv;//要发送给服务器的信息charsend_buf[]="Hello!Iamaclient.";//接收数据的缓冲区charrecv_buf[DATA_BUFFER];//服务器端地址structsockaddr_inser;//处理命令行中输入的参数if(argc<2){//提示在
4、命令行中输入服务器IP地址printf("Usage:client[serverIPaddress]");return;}客户端代码//接收数据的缓冲区初始化memset(recv_buf,0,sizeof(recv_buf));if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0){printf("FailedtoloadWinsock.");return;}//建立服务器端地址ser.sin_family=AF_INET;ser.sin_port=htons(iPort)
5、;ser.sin_addr.s_addr=inet_addr(argv[1]);//建立客户端数据报套接口sClient=socket(AF_INET,SOCK_DGRAM,0);if(sClient==INVALID_SOCKET){printf("socket()Failed:%d",WSAGetLastError());return;}iLen=sizeof(ser);客户端代码//向服务器发送数据iSend=sendto(sClient,send_buf,sizeof(send_buf),0,(st
6、ructsockaddr*)&ser,iLen);if(iSend==SOCKET_ERROR){printf("sendto()Failed:%d",WSAGetLastError());return;}elseif(iSend==0)return;elseprintf("snedto()succeeded.");客户端代码//从服务器接收数据iRecv=recvfrom(sClient,recv_buf,sizeof(recv_buf),0,(structsockaddr*)&ser,&iLen);
7、if(iRecv==SOCKET_ERROR){printf("recvfrom()Failed.:%d",WSAGetLastError());return;}elseif(iRecv==0)return;else{//显示从服务器收到的信息printf("recvfrom():%s",recv_buf);printf("-------------------------------");}closesocket(sClient);WSACleanup();}服务器端代码/************
8、*************************************************************调试环境:VC++6.0程序名称:server.cpp服务器IP地址:由系统指定服务器端口:5050功能:①从端口5050接收客户端发送来的数据,接收成功后显示从客户端收到的数据、客户端的IP地址和端口号;②给客户端发送"Hello!Iamaserver."字符串命