文档详情

服务器回射程序设计剖析.doc

发布:2017-05-03约字共11页下载文档
文本预览下载声明
网络编程技术实验报告 实验名称 队 别 姓 名 学 号 实验日期 2015.12.9 实验报告要求: 1.实验目的 2.实验要求 3.实验环境 4.实验作业 5.问题及解决 6.思考问题 7.实验体会 【实验目的】 熟悉流式套接字编程 【实验】【实验】 C++ 【实验】 class CSocketFrame { public: int start_up(); int clean_up(); int set_address(char *hname,char *sname,struct sockaddr_in *sap,char *protocol); int quit(SOCKET s); SOCKET tcp_server(ULONG uIP,USHORT uPort); SOCKET tcp_server(char *hname,char *sname); SOCKET tcp_client(char *hname,char *sname); SOCKET tcp_client(ULONG uIP,USHORT uPort); }; int CSocketFrame::start_up(void) { WORD wVersionRequested; WSADATA wsaData; int iResult; wVersionRequested=MAKEWORD(2,2); iResult=WSAStartup(wVersionRequested,wsaData); if(iResult!=0) { printf(WSAStartup 调用错误,错误号:%d\n,WSAGetLastError()); return -1; } /* if(LOBYTE(wsaData.wVersion!=2||HIBYTE(wsaData.wVersion)!=2)) { printf(无法找到可用的WSD版本\n); WSACleanup(); return -1; //告诉用户无法找到可用的WSD } else { printf(WS2.2初始化成功!\n); } */ return 0; } int CSocketFrame::clean_up(void) { int iResult; iResult=WSACleanup(); if(iResult==SOCKET_ERROR) { //WSACleanup()调用失败 printf(WSACleanup 调用错误,错误号:%d\n,WSAGetLastError()); return -1; } else printf(Winsocket dll释放成功!\n) ; return 0; } int CSocketFrame::set_address(char *hname,char *sname,struct sockaddr_in *sap,char *protocol) { struct servent *sp; struct hostent *hp; char *endptr; unsigned short port; unsigned long ulAddr=INADDR_NONE; //将地址结构socketsddr_in初始化为0,并将地址族设为AF_INET memset(sap,0,sizeof(*sap)); sap-sin_family=AF_INET; if(hname!=NULL) { //如果hname不为空,转化地址格式 ulAddr=inet_addr(hname); if(ulAddr==INADDR_NONE||ulAddr==INADDR_ANY) { //调用错误,调用gethostbyname获得主机地址 hp=gethostbyname(hname); if(hp==NULL) { printf(未知的主机名,错误号:%d\n,WSAGetLastError()); return -1; } sap-sin_addr=*(struct in_addr *)hp-h_addr;
显示全部
相似文档