实验名称 实验名称 基于UDP的客户与服务器通信程序 所属课程名称 TCP/IP
协议
离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载
与网络编程 实验时间 2010/11/12 实验地点 信控系二机房 学生姓名 陈红梅 实验器材及环境 PC机、Visual C++ 6.0 实验目的 1. 在C++环境中编写代码,调用Winsock AIP基本函数,实现一个基于UDP的客户/服务器通信程序。 实验内容 1. 熟练掌握函数的调用及其编程; 2. 理解掌握基于UDP的客户/服务器通信程序; 3. 理解函数的Winsock AIP基本函数的调用、返回值的类型、函数功能等。 实验步骤 1、 进入Visual C++6.0 2、 创建一个空
工程
路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理
sy1 3、 创建area.c文件 4、 流程图 5、 编写代码 程序一:服务器端 #include
#include #include #define DEFAULT_PORT 5050 #define BUFFER_LENGTH 1024 #pragma comment(lib,"WS2_32.lib") void main() { int iPort=DEFAULT_PORT; WSADATA wsaData; SOCKET sSocket; int iLen,iRecv,iSend; struct sockaddr_in ser,cli; char send_buf[]="Hollo!I am a server"; char recv_buf[BUFFER_LENGTH]; printf("--------------------"); printf("Server waiting"); printf("--------------------"); if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0) { printf("环境初始化错误:\n"); return; } sSocket=socket(AF_INET,SOCK_DGRAM,0); if(sSocket==INVALID_SOCKET) { printf("socket()函数调用失败:\n",WSAGetLastError()); return; } ser.sin_family=AF_INET; ser.sin_port=htons(iPort); ser.sin_addr.s_addr=htonl(INADDR_ANY); if(bind(sSocket,(LPSOCKADDR)&ser,sizeof(ser))==SOCKET_ERROR) { printf("bind()函数调用失败:\n",WSAGetLastError()); return; } iLen=sizeof(cli); memset(recv_buf,0,sizeof(recv_buf)); while(1) { iRecv=recvfrom(sSocket,recv_buf,BUFFER_LENGTH,0,(SOCKADDR*)&cli,&iLen); if(iRecv==SOCKET_ERROR) { printf("recvfrom()函数调用失败:\n",WSAGetLastError()); break; } else if(iRecv==0) break; else { printf("recvfrom():%d\n",recv_buf); printf("客户端的IP地址、端
口号
管理印章的关于负责的工作口号抗洪救灾口号体育运动口号宣誓口号公司企业文化口号
:%d\n",inet_ntoa(cli.sin_addr),ntohs(cli.sin_port)); } iSend=sendto(sSocket,send_buf,sizeof(send_buf),0,(SOCKADDR*)&cli,sizeof(cli)); if(iSend==SOCKET_ERROR) { printf("sendto()函数调用失败:\n",WSAGetLastError()); break; } else if(iSend==0) break; else { printf("sendto():调用成功!\n"); } } closesocket(sSocket); WSACleanup(); } 流程图二: 程序二:客户机端程序 #include #include #include #define DEFAULT_PORT 5050 #define DATA_BUFFER 1024 #pragma comment(lib,"WS2_32.lib") void main(int argc,char* argv[]) { WSADATA wsaData; SOCKET sClient; int iPort=5050; int iLen; int isend,iRecv; char send_buf[]="Hello! I am a client"; char recv_buf[DATA_BUFFER]; struct sockaddr_in ser; if(argc<2) { printf("输入服务器的IP地址:\n"); return; } else memset(recv_buf,0,sizeof(recv_buf)); if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0) { printf("Winsock环境初始化失败:\n"); return; } sClient=socket(AF_INET,SOCK_DGRAM,0); if(sClient==INVALID_SOCKET) { printf("socket()函数调用失败:%d\n",WSAGetLastError()); return; } ser.sin_family=AF_INET; ser.sin_port=htons(iPort); ser.sin_addr.s_addr=inet_addr(argv[1]); iLen=sizeof(ser); isend=sendto(sClient,send_buf,sizeof(send_buf),0,(struct sockaddr*)&ser,iLen); if(isend==SOCKET_ERROR) { printf("sendto()函数调用失败:%d\n",WSAGetLastError()); return; } else if(isend==0) return; else printf("sendto()调用成功:\n"); iRecv=recvfrom(sClient,recv_buf,sizeof(recv_buf),0,(struct sockaddr*)&ser,&iLen); if(iRecv==SOCKET_ERROR) { printf("recvfrom()函数调用失败:%d\n",WSAGetLastError()); return; } else if(iRecv==0) return; else { printf("sendto():%s\n",recv_buf); printf("-------------------------------\n"); } closesocket(sClient); WSACleanup(); } 6、编译程序 7、查看运行 8、出错分析 实验
总结
初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf
1. 函数功能是:完成Winsock服务的初始化,从而可以在应用程序当中调用任何一个Winsock API函数; 2. 函数调用成功时返回0 3. 应用程序只能在一次成功的WSAStartup()调用之后才能进一步调用其它函数; 实验心得 完成此次的实验
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
单后我的感受有: 1、 对学过的知识不能够真正理解。 2、 对学过的理论知识不能在实际问题中学以致用。 3、 对循环语句的逻辑思维不理解。 4、 对一些语句的使用语法模糊不清。不能正确的用了流程图来反映其代码的含义及其做题思路。