华科 计算机网络 实验报告1Word文档下载推荐.docx

上传人:b****5 文档编号:18676834 上传时间:2022-12-31 格式:DOCX 页数:18 大小:197.50KB
下载 相关 举报
华科 计算机网络 实验报告1Word文档下载推荐.docx_第1页
第1页 / 共18页
华科 计算机网络 实验报告1Word文档下载推荐.docx_第2页
第2页 / 共18页
华科 计算机网络 实验报告1Word文档下载推荐.docx_第3页
第3页 / 共18页
华科 计算机网络 实验报告1Word文档下载推荐.docx_第4页
第4页 / 共18页
华科 计算机网络 实验报告1Word文档下载推荐.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

华科 计算机网络 实验报告1Word文档下载推荐.docx

《华科 计算机网络 实验报告1Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《华科 计算机网络 实验报告1Word文档下载推荐.docx(18页珍藏版)》请在冰豆网上搜索。

华科 计算机网络 实验报告1Word文档下载推荐.docx

3.实验内容与结果

2.修改simplex-talk程序,编制duplex-talk程序,支持client和server的双向通信

(1)程序整体功能

Client端程序连接Server端程序,Client能给Server发送信息,同时Server也能给Client发送信息,实现双向通信;

(2)程序组成及各模块/函数功能

Client端

Y

N

Server

(3)程序清单(见附件)

(4)程序的运行和测试结果

编译源文件,生成可执行文件并运行,其过程如下:

Socket端

server.exe

[simplex-talkserver]serverisreadyinlistening...

client.exelocalhost

[simplex-talkserver]receivedaconnectionfrom127.0.0.1:

[simplex-talkclient]connectiontolocalhostisready

[simplex-talkclient]pleaseinputyourmessage(emptyinputtohalt):

Hello,Server.

[simplex-talkclient]send14charstoserver

[simplex-talkserver]received14chars

Hello,Client.

[simplex-talkserver]send14charstoclient

[simplex-talkclient]received14chars

Bye.

[simplex-talkclient]send5charstoserver

[simplex-talkserver]received5chars

[simplex-talkserver]emptymessageissendtoclient

[simplex-talkserver]connectionfrom127.0.0.1isterminated

[simplex-talkclient]emptymessageisreceived

[simplex-talkclient]connectionisterminated

运行结果截图

Client

4.实验中的问题

暂无

附件

1.

程序源代码

(1)socket-client.c

[键入文档的引述或关注点的摘要。

您可将文本框放置在文档中的任何位置。

请使用“绘图工具”选项卡更改引言文本框的格式。

]

/*wliucomments:

requiredforwindowssocketprogramming*/

#include<

winsock.h>

#pragmacomment(lib,"

wsock32.lib"

stdio.h>

string.h>

#defineSERVER_PORT5432

#defineMAX_BUFSIZE256

intmain(intargc,char*argv[])

{

/*wliucomments:

WSADATAWSAData;

intWSAreturn;

uselesspointer*/

//FILE*fp;

structhostent*hp;

structsockaddr_insin;

char*host;

charbufIn[MAX_BUFSIZE],bufOut[MAX_BUFSIZE];

ints,new_s;

intlen;

intableToSendMsg=1;

//LimWugcomments:

Thisvariableactsasaflagtosendandreceivemessage

host="

localhost"

;

//if(argc==2){

//host=argv[1];

//}

//else{

//fprintf(stderr,"

usage:

simplex-talkhost\n"

);

//exit

(1);

modifiedforwindowssocketprogramming*/

WSAreturn=WSAStartup(0x101,&

WSAData);

if(WSAreturn)

{

fprintf(stderr,"

simplex-talk:

WSAerror.\n"

exit

(1);

}

/*translatehostnameintopeer'

sIPaddress*/

hp=gethostbyname(host);

if(!

hp){

unknownhost:

%s\n"

host);

modifiedforstringmemoryoperationinwindows*/

//bzero((char*)&

sin,sizeof(sin));

//bcopy(hp->

h_addr,(char*)&

sin.sin_addr,hp->

h_length);

/*buildaddressdatastructure*/

memset((char*)&

sin,0,sizeof(sin));

memcpy((char*)&

h_addr,hp->

sin.sin_family=AF_INET;

sin.sin_port=htons(SERVER_PORT);

/*activeopen*/

if((s=socket(PF_INET,SOCK_STREAM,0))<

0){

perror("

socketfailed."

if(connect(s,(structsockaddr*)&

sin,sizeof(sin))<

connectfailed."

/*wliucomments:

//close(s);

closesocket(s);

}

displayingcurrentstatus*/

printf("

[simplex-talkclient]connectionto%sisready\n"

\n"

modificationtosupportconnectiontermination*/

//while(fgets(buf,sizeof(buf),stdin)){

/*mainloop:

getandsendlinesoftext*/

while

(1){

if(ableToSendMsg){

//LimWugcomments:

SendMessgage

fgets(bufIn,sizeof(bufIn),stdin);

/*wliucomments:

modifiedtostopsending*/

if(strlen(bufIn)==1){

/*wliucomments:

userinputemptymessagewith'

\n'

*/

bufIn[0]='

\0'

send(s,bufIn,1,0);

printf("

[simplex-talkclient]emptymessageissendtoserver\n"

break;

}else{

bufIn[MAX_BUFSIZE-1]='

len=strlen(bufIn)+1;

send(s,bufIn,len,0);

[simplex-talkclient]send%dcharstoserver\n\n"

strlen(bufIn));

ableToSendMsg=0;

}

}

else{

ReceiveMessage

len=recv(s,bufOut,sizeof(bufOut),0);

///*wliucomments:

if(strlen(bufOut)==0){

receivedemptymessage*/

[simplex-talkclient]emptymessageisreceived\n"

[simplex-talkclient]received%dchars\n"

strlen(bufOut));

fputs(bufOut,stdout);

ableToSendMsg=1;

}

[simplex-talkclient]connectionisterminated\n"

WSACleanup();

return1;

Socket-server.c

/*---------------------------------------------------*/

//filename:

socket-server.c

//fileuseage:

demostratethebasicTCP-basedblocked

//socketprogramminginwindowssystem

//fileorigin:

demoofsimplex-talk

//computernetworks,systemapproach,4th

//modifiedbyWeiLiu,06/12/2011

//modifiedbyLimWug,03/21/2012

requiredforlinuxsocketprogramming*/

//#include<

sys/types.h>

sys/socket.h>

netinet/in.h>

netdb.h>

#defineMAX_PENDING5

#defineMAX_CONNECTION3

intmain()

intableToSendMsg=0;

connections*/

intconn;

sin.sin_addr.s_addr=INADDR_ANY;

/*setuppassiveopen*/

if((bind(s,(structsockaddr*)&

sin,sizeof(sin)))<

bindfailed."

listen(s,MAX_PENDING);

[simplex-talkserver]serverisreadyinlistening...\n"

/*waitforconnection,thenreceiveandprinttext*/

conn=0;

while(conn<

MAX_CONNECTION){

correctionforvariablelen*/

len=sizeof(structsockaddr_in);

if((new_s=accept(s,(structsockaddr*)&

sin,&

len))<

0){

perror("

acceptfailed."

exit

(1);

[simplex-talkserver]receivedaconnectionfrom%s:

\n"

inet_ntoa(sin.sin_addr));

//while(len=recv(new_s,buf,sizeof(buf),0)){

while

(1){

if(ableToSendMsg){

//LimWugcomments:

fgets(bufIn,sizeof(bufIn),stdin);

if(strlen(bufIn)==1){

/*wliucomments:

bufIn[0]='

send(new_s,bufIn,1,0);

printf("

[simplex-talkserver]emptymessageissendtoclient\n"

break;

}else{

bufIn[MAX_BUFSIZE-1]='

len=strlen(bufIn)+1;

send(new_s,bufIn,len,0);

[simplex-talkserver]send%dcharstoclient\n\n"

ableToSendMsg=0;

}

else{

len=recv(new_s,bufOut,sizeof(bufOut),0);

if(strlen(bufOut)==0){

[simplex-talkserver]emptymessageisreceived\n"

[simplex-talkserver]received%dchars\n"

fputs(bufOut,stdout);

ableToSendMsg=1;

}

printf("

[simplex-talkserver]connectionfrom%sisterminated\n"

//close(new_s);

closesocket(new_s);

conn++;

[simplex-talkserver]max_connectionsachieved,serverhalt\n"

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

当前位置:首页 > 小学教育 > 学科竞赛

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

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