西安交通大学TCP IP 网络编程.doc
上传人:qw****27 上传时间:2024-09-12 格式:DOC 页数:6 大小:31KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

西安交通大学TCP IP 网络编程.doc

西安交通大学TCPIP网络编程.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

TCP/IP网络编程课程实验报告学生信息:所在学院:电子与信息工程学院指导教师:郑卫斌提交日期:2014年1月15日一实验目的(1)了解Unix网络编程中TCPsocket编程部分;(2)熟悉如何编程,采用C/C++语言编程;(3)熟练的进行TCPSocket中client以及server的使用;(4)熟悉和掌握Socket编程的基本理论和方法。掌握基于TCP和UDP的工作原理以及Socket编程的一般方法,能够编写简单的网络应用程序。二实验要求参考QQ、MSN、Gtalk等,编写一个聊天工具Talk(Chat),可以多人合作完成。系统说明:1.最低要求:可以1对1聊天;客户端可采用Windows,WinSock编程;系统工作流畅无阻塞。2.可以多人聊天;3.每个人都有ID;4.支持Image和文件;5.支持音频聊天;6.其他功能。三实验环境Windows7、Ubuntu。四实验原理Sockets(套接字)编程有三种,流式套接字(SOCK_STREAM)TCP,数据报套接字UDP(SOCK_DGRAM),原始套接字(SOCK_RAW);基于TCP的socket编程采用的是流式套接字。在这个程序中,将两个工程添加到一个工作区。要链接一个ws2_32.lib库文件。服务器端编程的步骤1.加载套接字库,创建套接字(WSAStartup())/socket());2.绑定套接字到一个IP地址和一个端口上(bind());3.将套接字设置为监听模式等待连接请求(listen());4.请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字(accept());5.用返回的套接字和客户端进行通信(read()/write());6.返回,等待另一连接请求;7.关闭套接字,关闭加载的套接字库(close())。客户端编程的步骤1.加载套接字库,创建套接字(WSAStartup()/socket());2.向服务器发出连接请求(connect());3.和服务器端进行通信(read()/write());4.关闭套接字,关闭加载的套接字库(close())。五实验代码server:#include<WINSOCK2.H>#include<stdio.h>#definePORT6000//服务器端口#defineMSGSIZE1024//收发缓冲区的大小#pragmacomment(lib,"ws2_32.lib")//链接静态库DWORDWINAPIFunThread(LPVOID);//创建一个线程,专门用来接收数据SOCKETsClient;//连接所用套节字SOCKETsListen;//监听套接字SOCKADDR_INclient;//保存客户的地址信息intiaddrSize=sizeof(SOCKADDR_IN);intmain(){WSADATAwsaData;SOCKADDR_INlocal;chars_Message[MSGSIZE];//收发缓冲区WSAStartup(0x0202,&wsaData);//InitializeWindowssocketlibrarysListen=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);//创建服务器监听套节字。TCP协议local.sin_family=AF_INET;//AF_INET指明使用TCP/IP协议族local.sin_port=htons(PORT);//指明连接服务器的端口号local.sin_addr.s_addr=htonl(INADDR_ANY);//自动获取本机地址bind(sListen,(structsockaddr*)&local,sizeof(SOCKADDR_IN));//地址绑定到套接字listen(sListen,1);//开始监听sClient=accept(sListen,(structsockaddr*)&client,&iaddrSize);//建立连接printf("Accepteclient:%s:%d\n",inet_ntoa(client.sin_addr),ntohs(client.sin_port));HANDLEhThread=CreateThread(NULL,0,FunThread,0,0,0);//创建接收线程CloseHandle(hThread);while(TRUE){printf("ServerSend:");//从键盘输入gets(s_Message);//发送数据send(sClient,s_Message,strlen(s_M