计网实验三套接字编程-实验报告(共6页).doc





《计网实验三套接字编程-实验报告(共6页).doc》由会员分享,可在线阅读,更多相关《计网实验三套接字编程-实验报告(共6页).doc(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上云南大学软件学院实 验 报 告课程: 计算机网络原理实验 任课教师: 姓名: 学号: 专业: 信息安全 成绩: 姓名: 学号: 专业: 信息安全 成绩: 实验三、套接字编程1实验目的:两人一组,编写一个客户端、服务器程序,掌握Socket编程原理。2实验环境:连入局域网络的主机一台。3实验指导:Socket API是实现进程间通信的一种编程设施,也是一种为进程间提供底层抽象的机制。理解socket编程模型及其原理。4实验分析,回答下列问题。a.运行指导书中的程序,并修改服务器的功能(自己思考),附上修改后的源代码,并加关键代码注释。改写后的实验源代码 1)服务器:#i
2、nclude stdafx.h#include #include#include #include #include #pragma comment(lib,ws2_32.lib) #define MYPORT 3490 /*定义用户连接端口*/ #define BACKLOG 10 /*多少等待连接控制*/ #define SERVER_IP_ADDR 113.55.16.115 /*服务器的IP地址*/ int main(int argc, TCHAR* argv)SOCKET sock, msgsock;int length = 0; struct sockaddr_in server;
3、 struct sockaddr tcpaddr; char buf1024 = ; int rval= 0, len= 0, err = 0; WORD wVersionRequested; WSADATA wsaData; /*指定socket版本,否则创建socket失败,即使创建socket返回值不为-1,但是bind时会失败*/ wVersionRequested = MAKEWORD( 2, 2 ); err = WSAStartup( wVersionRequested, &wsaData );if ( err != 0 ) return -1; /* 建立套接字*/ sock
4、= socket(AF_INET, SOCK_STREAM, 0); if (sock 0) perror(opening stream socket); exit(1); /* 使用任意端口命名套接字*/ server.sin_family = AF_INET; server.sin_port = htons(MYPORT); server.sin_addr.s_addr = inet_addr(SERVER_IP_ADDR); memset(server.sin_zero, 0, sizeof(server.sin_zero); /将服务器地址与socket绑定在一起 rval = bin
5、d(sock, (struct sockaddr *)&server, sizeof(server); if (rval 0) perror(binding stream socket); exit(1); / 找出指定的端口号并打印出来 length = sizeof(server); if (getsockname(sock, (struct sockaddr *)&server, &length) 0) perror(getting socket name); exit(1); printf(端口号 #%dn, ntohs(server.sin_port); / 开始接收连接,最大请求数
6、为 listen(sock, 5); len = sizeof(struct sockaddr); do msgsock = accept(sock, (struct sockaddr *)&tcpaddr, (int *)&len); if (msgsock = -1) perror(accept); else for(;) memset(buf, 0, sizeof(buf); if ( (rval = recv(msgsock, buf, sizeof(buf),0) 0) perror(连接中断); if (rval = 0) printf(响应方: %sn, buf);gets(bu
7、f); /运用gets获取字符串 rval = send(msgsock, buf, strlen(buf) + 1,0);/当rval的值小于0的时候就会输出错误信息:“连接中断”./当rval=0的时候,就会扫描并接收到的客户端发来的信息打印出来 closesocket(msgsock); while (strcmp(buf,bye); /* 因为这个程序已经有了一个无限循环,所以套接字sock从来不显式关闭。然而,当进程被杀死或正常终止时,所有套接字都将自动地被关闭。*/ closesocket(msgsock);return 0; 2)客户端#include stdafx.h#incl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 套接 编程 报告

限制150内