实验一 Windows下Socket编程实现简单通信.doc_第1页
实验一 Windows下Socket编程实现简单通信.doc_第2页
实验一 Windows下Socket编程实现简单通信.doc_第3页
实验一 Windows下Socket编程实现简单通信.doc_第4页
实验一 Windows下Socket编程实现简单通信.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

天津理工大学实验报告学院(系)名称:计算机与通信工程学院姓名刘琪琪学号20125871专业网络工程班级1班实验题目Windows下Socket编程实现简单通信课程名称网络编程课程代码实验时间2015实验地点7-219批改意见成绩教师签字: 实验 Windows下Socket编程实现简单通信一 实验目的 在windows环境下进行socket编程,实现两台主机间的简单通信。二 实验环境搭载 Windows 7 操作系统的PC机VC 6.0 编译器三 实验内容1,服务器、客户端创建套接字2,客户端发送连接请求3,服务器收到请求后打印连接成功消息四 实验报告要求1,有客户端和服务器的完整代码2,实验结果截图3,Socket通信过程流程图五 部分源代码及主要Socket函数参考1, 注册套接字函数socket(int af,int type,int protocol)参数解释:af : 一个地址描述 ,目前只支持AF_INET格式,也就是说在本次实验中此参数直接写 为AF_INET即可。type: 指定socket类型,例如 TCP类型(SOCK_STREAM) UDP类型(SOCK_DGRAM)protocol: 套接口制订协议类型 可以为0,。 常用类型有 IPPROTO_TCP 、IPPROTO_UDP等2, 绑定套接字函数 bind ( SOCKET s , const struct sockaddr FAR *addr , int namelen );参数解释:s :socket()函数返回的套接口描述字addr : 指向Socket地址的指针namelen :该地址的长度3,监听函数listen(SOCKET s,int backlog)参数解释:s: socket()函数返回的套接口描述字backlog:等待连接队列的最大长度4,接收连接函数accept(SOCKET s,struct sockaddr FAR* addr,int FAR* addrlen)参数解释:s: socket()函数返回的套接口描述字addr:(可选)指针,指向一缓冲区,其中接收为通讯层所知的连接实体的地址。addr参数的实际格式由套接口创建时所产生的地址族确定addrlen:(可选)指针,输入参数,配合addr一起使用,指向存有addr地址长度的整型数5, 发送连接请求函数connect(SOCKET s,const struct coskaddr FAR* name,int namelen)s: socket()函数返回的套接口描述字name: 想要进行连接的端口名namelen: 名字长度客户端:#include #include #include #include #define PORTNUMBER 333#pragma comment(lib,ws2_32.lib)#define QueueLen 6int visits = 0;int main(int argc, char * argv)WORD version;version = MAKEWORD(1, 1);WSADATA wsa;if(0 != WSAStartup(version, &wsa) /初始化socket()printf(WSAStartup error!n);exit(0);/struct hostent * ptrh;struct sockaddr_in servaddr;struct sockaddr_in clientaddr;int listenfd;int clientfd;int port;int alen;char buf1000;memset(&servaddr, 0, sizeof(servaddr); /初始化servaddr为0servaddr.sin_family = AF_INET;/主机地址标识的数据结构,使用TCP/IP协议servaddr.sin_addr.s_addr = INADDR_ANY;/32位的IP地址,网络字节顺序if(argc 1)port = atoi(argv1); else port = PORTNUMBER;if(port 0)servaddr.sin_port = htons(unsigned short) port); /把端口转换成网络序 else fprintf(stderr, bad port number%dn, argv1);exit(0);listenfd = socket(AF_INET, SOCK_STREAM, IPPROTO_IP ); /注册一个socket descriptionDWORD error = GetLastError();if(listenfd 0)fprintf(stderr, socket createion failed!n);exit(0);if(bind(listenfd, (struct sockaddr *) & servaddr, sizeof(servaddr) 0)/绑定到端口fprintf(stderr, bind failed!n);exit(0);if(listen(listenfd, QueueLen) 0)/开始监听端口fprintf(stderr, listen failed!n);exit(0);while(1)/主循环alen = sizeof(clientaddr);if(clientfd = accept(listenfd, (struct sockaddr*)&clientaddr, &alen) 0)/接受客户端的连接fprintf(stderr, accept failed!n);exit(0);printf(连接成功!);visits+;sprintf(buf, This server has been connected %d timen, visits);/把需要发送的数据放到缓冲区里面send(clientfd, buf, strlen(buf), 0);/发送数据到客户端closesocket(clientfd);return 0;服务器端:#include #include #include #include #include #include #define MAXLINE 1000#define SERVERPORT 333#pragma comment(lib,ws2_32.lib)int main(int argc, char * argv)WORD version;version = MAKEWORD(1, 1);WSADATA wsa;if(0 != WSAStartup(version, &wsa) /初始化 socketprintf(WSAStartup error!n);exit(0);int sockfd, n;char recvlineMAXLINE + 1;struct sockaddr_in servaddr;memset(&servaddr, 0, sizeof(servaddr);servaddr.sin_family = AF_INET;servaddr.sin_port = htons(SERVERPORT);servaddr.sin_addr.s_addr = inet_addr(192.168.0.103);if(sockfd = socket(AF_INET, SOCK_STREAM, 0) 0)printf(sockfd error!n);exit(0);printf(sockfd is %dn, (int)sockfd);if(connect(sockfd,(struct sockaddr *) & serva

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论