服务器回射程序设计Word下载.doc
- 文档编号:13261442
- 上传时间:2022-10-09
- 格式:DOC
- 页数:11
- 大小:83.50KB
服务器回射程序设计Word下载.doc
《服务器回射程序设计Word下载.doc》由会员分享,可在线阅读,更多相关《服务器回射程序设计Word下载.doc(11页珍藏版)》请在冰豆网上搜索。
主动请求建立连接,接收界面输入字符串,发送数据给服务器,接收服务器返回的应答,输出显示。
2. 服务器:
在指定端口上提供服务,接收客户端的发送的回射请求字符串,将接收到的内容回射给客户端,输出显示。
3. 提炼出网络操作的基本功能,构造网络操作类,修改原有程序
【实验环境】
DEVC++
【实验作业】
网络操作类设计:
classCSocketFrame
{
public:
intstart_up();
intclean_up();
intset_address(char*hname,char*sname,structsockaddr_in*sap,char*protocol);
intquit(SOCKETs);
SOCKETtcp_server(ULONGuIP,USHORTuPort);
SOCKETtcp_server(char*hname,char*sname);
SOCKETtcp_client(char*hname,char*sname);
SOCKETtcp_client(ULONGuIP,USHORTuPort);
};
intCSocketFrame:
:
start_up(void)
WORDwVersionRequested;
WSADATAwsaData;
intiResult;
wVersionRequested=MAKEWORD(2,2);
iResult=WSAStartup(wVersionRequested,&
wsaData);
if(iResult!
=0)
{
printf("
WSAStartup调用错误,错误号:
%d\n"
WSAGetLastError());
return-1;
}
/*
if(LOBYTE(wsaData.wVersion!
=2||HIBYTE(wsaData.wVersion)!
=2))
无法找到可用的WSD版本\n"
);
WSACleanup();
//告诉用户无法找到可用的WSD
}
else
WS2.2初始化成功!
\n"
}*/
return0;
}
clean_up(void)
intiResult;
iResult=WSACleanup();
if(iResult==SOCKET_ERROR)
{
//WSACleanup()调用失败
printf("
WSACleanup调用错误,错误号:
return-1;
}
else
Winsocketdll释放成功!
);
return0;
set_address(char*hname,char*sname,structsockaddr_in*sap,char*protocol)
structservent*sp;
structhostent*hp;
char*endptr;
unsignedshortport;
unsignedlongulAddr=INADDR_NONE;
//将地址结构socketsddr_in初始化为0,并将地址族设为AF_INET
memset(sap,0,sizeof(*sap));
sap->
sin_family=AF_INET;
if(hname!
=NULL)
//如果hname不为空,转化地址格式
ulAddr=inet_addr(hname);
if(ulAddr==INADDR_NONE||ulAddr==INADDR_ANY)
{
//调用错误,调用gethostbyname获得主机地址
hp=gethostbyname(hname);
if(hp==NULL)
{
printf("
未知的主机名,错误号:
return-1;
}
sap->
sin_addr=*(structin_addr*)hp->
h_addr;
}
else
sin_addr.S_un.S_addr=ulAddr;
}
//如果调用者没有指明一个主机名或地址,则设为通配地址
sap->
sin_addr.s_addr=htonl(INADDR_ANY);
//尝试转换sname为一个整数
port=(unsignedshort)strtol(sname,&
endptr,0);
if(*endptr=='
\0'
)
//如果成功转化为网络字节序
sin_port=htons(port);
//如果失败,则假定是一个服务名称,通过getservbyname()函数获得端口号
sp=getservbyname(sname,protocol);
if(sp==NULL)
未知服务,错误号:
}
sin_port=sp->
s_port;
return0;
quit(SOCKETs)
intiResult=0;
iResult=closesocket(s);
printf("
closesocket调用错误,错误号:
iResult=clean_up();
returniResult;
SOCKETCSocketFrame:
tcp_server(char*hname,char*sname)
SOCKETListenSocket;
sockaddr_inlocal;
constinton=1;
//为服务器的本机地址设置用户输入的地址以及端口号
if(set_address(hname,sname,&
local,(char*)"
tcp"
)!
return-1;
//创建套接字
ListenSocket=socket(AF_INET,SOCK_STREAM,0);
if(ListenSocket==INVALID_SOCKET)
printf("
socket函数调用错误,错误号:
WSACleanup();
return-1;
//绑定服务器地址
iResult=bind(ListenSocket,(structsockaddr*)&
local,sizeof(local));
if(iResult==-1)
bind函数调用错误!
错误号:
closesocket(ListenSocket);
//设置函数为监听状态,监听队列长度为NLISTEN
iResult=listen(ListenSocket,SOMAXCONN);
Listen函数调用错误!
quit(ListenSocket);
return-1;
returnListenSocket;
tcp_server(ULONGuIP,USHORTuPort)
SOCKETListenSocket=INVALID_SOCKET;
memset(&
local,0,sizeof(local));
local.sin_family=AF_INET;
local.sin_addr.S_un.S_addr=htonl(uIP);
local.sin_port=htons(uPort);
clean_up();
tcp_client(char*hname,char*sname)
structsock
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 服务器 射程 设计