服务器回射程序设计Word下载.doc

上传人:b****2 文档编号:13261442 上传时间:2022-10-09 格式:DOC 页数:11 大小:83.50KB
下载 相关 举报
服务器回射程序设计Word下载.doc_第1页
第1页 / 共11页
服务器回射程序设计Word下载.doc_第2页
第2页 / 共11页
服务器回射程序设计Word下载.doc_第3页
第3页 / 共11页
服务器回射程序设计Word下载.doc_第4页
第4页 / 共11页
服务器回射程序设计Word下载.doc_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

服务器回射程序设计Word下载.doc

《服务器回射程序设计Word下载.doc》由会员分享,可在线阅读,更多相关《服务器回射程序设计Word下载.doc(11页珍藏版)》请在冰豆网上搜索。

服务器回射程序设计Word下载.doc

主动请求建立连接,接收界面输入字符串,发送数据给服务器,接收服务器返回的应答,输出显示。

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1