天津理工大学计算机网络实验二

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
char data[80];
UINT ReciveBytes=O;
FD_ZERO(&fdread);
FD_SET(c, &fdread);
do
{
if((ret=select(0, &fdread,NULL,NULL,NULL))==SOCKET_ERROR) {
OutErr(stri ng( "select "));
源程来自百度文库:
(1)服务端:
//server.cpp
#i nclude<win sock2.h>
#i nclude<io.h>
#i nclude<win dows.h>
#i nclude<iostream>
#in elude<stri ng>
#pragmacomme nt(lib, "WS2_32.lib ")
}
ser_addr.sin_addr.S_ un .S_addr=i net_addr( "0.0.0.0 ");
ser_addr.s in _family=AF_INET;
ser_addr.s in _port=ht on s(port);
〃if((server=WSASocket(AF_INET,SOCK_STREAM,IPPROTO_IP,NULL,0,1))==INVALID_SOCKET)
cout << "客户IP:" <<inet_ntoa(cli_addr.sin_addr)
<< ",端口:"<<ntohs(cli_addr.sin_port) <<endl;
ULONG ul=1;
if(ioctlsocket(clie nt,FIONBIO,&ul)==SOCKET_ERROR)
人和以吟
学院(系)名称: 计算机与通信工程学院
姓名
学号
专业
计算机科学与技术
班级
实验名称
实验二:基于TCP/UDP的Socket编程
课程名称
计算机网络
课程代码
实验时间
实验地点
7#219
批改意见
成绩
教师签字:
1.实验目的
了解套接字(socket)实现原理。通过编成理解TCP、UDP原理,加深对传输层的功能理解。
WSADATA wdata;
intcliaddrLe n=0;
UINT port=4000;
HANDLEHnd;
DWORDdwThreadID;
if(WSAStartup(MAKEWORD(2,0),&wdata)!=0)
{
OutErr(stri ng( "WSAStartup "));
return 1;
2.实验环境
Win dows7
3.实验要求
请在以下题目中选择一个,按照要求完成实验,并完成实验报告。实验可以分组进行,每2人一组,在
报告中注明每个成员的分工。编程可以使用任何高级语言,建议使用java或C++。
(1)基于TCP/UDP的socket编程
a)利用Java或C++语言,分别基于TCP和UDP编写一个简单的Client/Server网络应用程序。
cout <<data <<e ndl;
}
}
}while(ReciveBytes> 0);
FD_CLR (c,&fdread);
closesocket(c);
return 0;
}
intmai n()
{
SOCKET server;
SOCKET clie nt;
SOCKADDR_IN ser_addr,cli_addr;
break;
}
if(ret> 0)
{
if(FD_ISSET(c, &fdread))
{
ReciveBytes=recv(c,data,10,0); if(ReciveBytes==SOCKET_ERROR) {
break;
}
cout << "收到字节数:”
<<ReciveBytes
<<e ndl;
data[ReciveBytes]= '\0 ';
要求实现客户向服务器传输任意一个字符串,服务器将收到的字符串变换成大写后传回客户。
b)修改上述程序,实现服务器根据客户请求,将服务器端指定的文件可靠地传输给客户。如果
服务器没有指定的文件,服务器将给客户返回一个信息,通知客户其请求文件不存在。
4.实验过程记录(源程序、测试用例、测试结果及心得体会等)
{
OutErr(stri ng( "ioctlsocket "));
return 1;
}
FD ZERO(&fdread);〃清空集合
FD_SET(client,&fdread);//将C加入到读取集合中
〃Hn d=CreateThread(NULL,0,ThreadProc,(LPVOID)clie nt,O, &dwThreadlD);
〃接收数据
while(TRUE)
{
char data[11];
int ReciveBytes;
//
if((ret=select(0, &fdread,NULL,NULL,NULL))==SOCKET_ERROR)
{
//
break;
}
if(ret>0)
{
if(FD_ISSET(client,&fdread))//c中是否属于fdread集合
if((server=socket(AF」N ET,SOCK_STREAM,IPPROTO_IP))==INVALID_SOCKET)
{
OutErr(stri ng( "WSASocket "));
return 1;
}
if(bi nd(server,(SOCKADDR*)&ser_addr,sizeof(SOCKADDR))!=0)
{
OutErr(stri ng( "bi nd "));
return 1;
}
if(liste n(server,5)!=0)
{
OutErr(stri ng( "listen "));
return 1;
}
while(1)
{
cliaddrLe n=sizeof(SOCKADDR);
clie nt=accept(server,(SOCKADDR*)&cli_addr,&cliaddrLe n);
usingn amespacestd;
void OutErr(stri ng msg)
{ cout << "错误!发生在"<<msg <<e ndl; }
fd_set fdread;
int ret;
DWORD WINAPI ThreadProc(LPVOID lpParameter)
{
SOCKET c=(SOCKET)lpParameter;
相关文档
最新文档