天津理工网络实验二卫晓彤_第1页
天津理工网络实验二卫晓彤_第2页
天津理工网络实验二卫晓彤_第3页
天津理工网络实验二卫晓彤_第4页
天津理工网络实验二卫晓彤_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

实验报告学院(系)名称:计算机与通信工程学院姓名卫晓彤学号20091995专业计算机科学与技术班级09-2班实验项目基于TCP/UDP的Socket编程课程名称计算机网络课程代码0662016实验时间2012年3月15日2012年 3月20日实验地点7-219批改意见成绩教师签字:实验目的: a) 利用Java或C+语言,分别基于TCP和UDP编写一个简单的Client/Server网络应用程序。要求实现客户向服务器传输任意一个字符串,服务器将收到的字符串变换成大写后传回客户。b) 修改上述程序,实现服务器根据客户请求,将服务器端指定的文件可靠地传输给客户。如果服务器没有指定的文件,服务器将给客户返回一个信息,通知客户其请求文件不存在。c) 有条件的同学可以进一步改进b)的程序,使之更实用。比如可以请求服务器先传输目录,然后客户根据目录请求传输文件等。实验要求:每位同学上机编程实验,实验指导教师现场指导。程序可参考附录的程序1、程序2、程序3和程序4(程序中有错误需完善)实验结果:1.传字符串、聊天附:源代码!Server:#include #include #include void main()WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD( 1, 1 );err = WSAStartup( wVersionRequested, &wsaData );if ( err != 0 ) return;if ( LOBYTE( wsaData.wVersion ) != 1 | HIBYTE( wsaData.wVersion ) != 1 ) WSACleanup( );return; SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);addrSrv.sin_family=AF_INET;addrSrv.sin_port=htons(6000);bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR);listen(sockSrv,5); /第2个?参?数y为a等待y队列D得?最?大长度SOCKADDR_IN addrClient;int len=sizeof(SOCKADDR);while(1)SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);char sendBuf100;sprintf(sendBuf,Sent successfully!,inet_ntoa(addrClient.sin_addr);send(sockConn,sendBuf,strlen(sendBuf)+1,0);char recvBuf100;recv(sockConn,recvBuf,100,0);time_t timep;time (&timep);printf(%s ,inet_ntoa(addrClient.sin_addr);printf(%s,ctime(&timep);printf(%sn,recvBuf);closesocket(sockConn);Client:#include #include #include #include void fun(char * msn)WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD( 1, 1 );err = WSAStartup( wVersionRequested, &wsaData );if ( err != 0 ) return;if ( LOBYTE( wsaData.wVersion ) != 1 | HIBYTE( wsaData.wVersion ) != 1 ) WSACleanup( );return; SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr=inet_addr(127.0.0.1);addrSrv.sin_family=AF_INET;addrSrv.sin_port=htons(6000);connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR);char recvBuf100;recv(sockClient,recvBuf,100,0);printf(%sn,recvBuf); time_t timep; time (&timep); printf(%s,ctime(&timep);send(sockClient,msn,strlen(msn)+1,0);closesocket(sockClient);WSACleanup();getchar();void main()char msn100;for(;)scanf(%s,msn);if(strcmp(msn,0)=0)break;fun(msn);2.传文件附源码:/server.cpp#include #include #include #include #define LISTENPORT 12345#pragma comment(lib,Wsock32)#pragma comment(lib,ws2_32)sendFile(SOCKET conSock) printf(Prapare to send filen); char *sendBuf = new char100; FILE *in; char infile50; printf(Input filename:n); scanf(%s,infile); if(in=fopen(infile,rb)=NULL) printf(Cant open the source file); exit(0); printf(File name is %sn, infile); / send file name to the client send(conSock, infile, sizeof(infile), 0); int handle = open(infile, 0x0001); long file_len = filelength(handle); long file_len_bak = file_len; printf(Size of the file is %dn, file_len); / store the length of the file in sendBuffer int i; for (i = 0; file_len 9; i+) sendBufi = (file_len % 10); file_len = file_len / 10; sendBufi = file_len % 10; send(conSock, sendBuf, i + 1, 0); printf(Transmission startedn); Sleep(1); char ch; char chack; while (file_len_bak != 0) ch = fgetc(in); send(conSock, &ch, 1, 0); recv(conSock, &chack, 1, 0); file_len_bak-; printf(.); ch = EOF; send(conSock, &ch, 1, 0); printf(nTransmission finished);int main() WSADATA words; if(WSAStartup(MAKEWORD(2,2),&words)!=0) printf(Winsock init failed!n); SOCKET listenSock, conSock; sockaddr_in remoteAddr; int remoteAddrLen, int ServerAddrLen; listenSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (listenSock = INVALID_SOCKET) printf(ListenSocket create failed!n); return 0; sockaddr_in sin; sin.sin_family = AF_INET; sin.sin_port = htons(LISTENPORT); sin.sin_addr.S_un.S_addr = INADDR_ANY; ServerAddrLen = sizeof(sin); if (bind(listenSock, (sockaddr *)&sin, ServerAddrLen) = SOCKET_ERROR) printf(Bind error!n); return 0; if (listen(listenSock, 2) = SOCKET_ERROR) printf(Cant listen!n); return 0; remoteAddrLen = sizeof(remoteAddr); while (TRUE) conSock = accept(listenSock, (sockaddr *)& remoteAddr, &remoteAddrLen); if (conSock = INVALID_SOCKET) printf(Accept failed!n); continue; else printf(Accept a new connect : %s rn, inet_ntoa(remoteAddr.sin_addr); sendFile(conSock); closesocket(conSock); closesocket(listenSock); WSACleanup(); return 1; /client.cpp#include #include #include #include using namespace std;#define SERVERPORT 12345#pragma comment(lib, Wsock32)#pragma comment(lib, ws2_32)receiveFile(SOCKET consock) printf(Prepare to receive filen); FILE *dest; char destfile50; char recvBuff100; / Receive name of the file int namelen = recv(consock, recvBuff, 100, 0); memcpy(destfile, recvBuff, namelen); printf(Name of the file is %s n, destfile); if(dest=fopen(destfile,wb)=NULL) printf(Cant open the dest file); exit(0); / Receive size of the file int flag_file_len = recv(consock, recvBuff, 100, 0); long file_len = 0; for (int i = 0; flag_file_len != 0; i+) long temp = recvBuffi; for (int j = 0; j != i; j+) temp = temp * 10; file_len = file_len + temp; flag_file_len-; printf(Size of the file is %ldn, file_len); printf(Ready to receive filen); char ch; char chack = 1; int n; while ( recv(consock, &ch, 1, 0) fputc(ch, dest); send(consock, &chack, 1, 0); file_len-; if (file_len = 0) break; printf(.); printf(nTransmission finishedn);int main() WSADATA words; if(WSAStartup(MAKEWORD(2,2),&words)!=0) printf(Winsock init failedn); SOCKET conSock; conSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (conSock = INVALID_SOCKET) printf(Socket create failedn); return 0; sockaddr_in servAddr; servAddr.sin_family = AF_INET; servAddr.

温馨提示

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

评论

0/150

提交评论