实验七简单的服务器客户端程序实验报告.docx

上传人:b****3 文档编号:1936558 上传时间:2022-10-25 格式:DOCX 页数:13 大小:47.80KB
下载 相关 举报
实验七简单的服务器客户端程序实验报告.docx_第1页
第1页 / 共13页
实验七简单的服务器客户端程序实验报告.docx_第2页
第2页 / 共13页
实验七简单的服务器客户端程序实验报告.docx_第3页
第3页 / 共13页
实验七简单的服务器客户端程序实验报告.docx_第4页
第4页 / 共13页
实验七简单的服务器客户端程序实验报告.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

实验七简单的服务器客户端程序实验报告.docx

《实验七简单的服务器客户端程序实验报告.docx》由会员分享,可在线阅读,更多相关《实验七简单的服务器客户端程序实验报告.docx(13页珍藏版)》请在冰豆网上搜索。

实验七简单的服务器客户端程序实验报告.docx

实验七简单的服务器客户端程序实验报告

系别

洛阳理工学院实验报告

计算机系

班级

B120503

学号

B12050316

姓名

段浴

课程名称

计算机网络

实验日期

2014/11/8

实验名称

简单的客户/服务器程序设计与实现

成绩

实验目的:

1、熟悉MicrosoftVisualStudio2008编程环境。

2、了解TCP与UDP协议,以及它们之间的区别。

3、了解客户/服务器模型原理。

4、熟悉Socket编程原理,掌握简单的套接字编程。

实验条件:

硬件:

PC机(两台以上)、网卡、已经设定好的以太网环境

软件:

MicrosoftVisualStudio2008

实验原理:

1、编写用TCP协议实现的Client端和Server端程序并调试通过

Socket()建立流式套接字,返回套接字号。

bind(),套接字s与本地地址相连。

listen(),通知TCP,服务器准备好接收连接。

accept。

接受连接,等待客户端的连接...

连接建立,accept。

返回,得到新的套接字,sc

recvt()/send(),在套接字sc上读/写数据,直到

数据交换完毕

closesocket(),关闭套接字sc

closesocket(),关闭最初套接字s,服务结束

客户方

Socket(),建立流失套接字,

返回套接字号

connect(),将套接字s与远

地主机连接

send()/recv(),在套接字上读

/写数据,直到数据交换完

closesocket(),关闭套接字

结束TCP对话

 

实验内容:

Sever端代码:

//server.cpp:

定义控制台应用程序的入口点。

#include

#include

#include

#include

#pragmacomment(lib,"WS2_32")

SOCKETsock1,sock2;

intsin_size;

structsockaddr_inmy_addr,their_addr;

charname[20];

〃初始化函数Tcp

voidInit()

{

printf("\n\n\nServer:

TCP\n\n\n");

//建立套接字

constWORDwMinver=0x0101;

WSADATAwsadata;

if(0!

=:

:

WSAStartup(wMinver,&wsadata))

perror("Startsocketerror!

");

if(INVALID_SOCKET==(sock仁:

:

socket(AF_INET,SOCK_STREAM,0)))

perror("Createsocketerror!

");

my_addr.sin_family=AF」NET;

my_addr.sin_addr.S_un.S_addr=INADDR_ANY;

my_addr.sin_port=htons(1000);

if(SOCKET_ERROR==:

:

bind(sock1,(structsockaddr*)&my_addr,sizeof(my_addr))){perror("Bindingstreamsocket");

exit

(1);

}

//开始侦听

if(SOCKET_ERROR==:

:

listen(sock1,5))

{

perror("Listeningstreamsocket");

exit

(1);

}

//接受连接

printf("Readytoserveclient.Pleaseconnect...\n\n\n");

sin_size=sizeof(structsockaddr_in);

if((sock2=accept(sock1,(structsockaddr*)&their_addr,&sin_size))==-1)

{

perror("Acceptingstreamsocket");

exit

(1);

printf(”}

〃选择菜单

intmenu()

{

}

Acceptinganewconnet:

%s",inet_ntoa(their_addr.sin_addr));

char*s=(char*)malloc(2*sizeof(char));

intc;

printf("\n\n\n

Server:

Menu\n\n\n");

printf("

*********************************\n\n");

printf("

*

1.Send

Message

*\n");

printf("

*

2.ReceiveMessage

*\n");

printf("

*

3.Exit

*\n\n");

printf("

*********************************\n");

do

{

printf("\nEnteryourchoice:

");

gets(s);

if(s[0]=='\0'){

gets(s);

}

c=atoi(s);

}while(c<0||c>3);

free(s);

returnc;

}

〃消息发送函数

voidSend()

{

charMsg[10240];

printf("\nPleaseInputthemessage:

");

gets(Msg);

Msg[10239]='\0';

:

:

send(sock2,Msg,strlen(Msg),0);

}

〃消息接收函数

voidReceive()

{

intlen;

charbuf[10240];

for(inti=0;i<10240;i++){

buf[i]='\0';

}

if((len=:

:

recv(sock2,buf,10240,0))==-1)

{

perror("Recevingdataerror");

exit

(1);

}

printf("TheReceivedMessage:

%s\n",buf);

}

〃主函数

voidmain()

{

Init();

for(;;)

{

switch(menu())

{

case1:

Send();

break;

case2:

Receive();

break;

case3:

exit(0);

}

}

〃:

:

closesocket(sock2);

:

:

closesocket(sock1);

:

:

WSACIeanup();

}

Client端代码:

//client.cpp:

定义控制台应用程序的入口点。

//

#include

#include

#include

#include

#pragmacomment(lib,"WS2_32")

SOCKETsock1,sock2;

intsin_size;

structsockaddr_inmy_addr,their_addr;

charname[20];

〃初始化函数Tcp

voidInit()

{

printf("\n\n\nClient:

TCP\n\n\n");

//建立套接字

constWORDwMinver=0x0101;

WSADATAwsadata;

if(0!

=:

:

WSAStartup(wMinver,&wsadata))

perror("Startsocketerror);

if(INVALID_SOCKET==(sock仁:

:

socket(AF_INET,SOCK_STREAM,0)))

perror("Createsocketerror!

");

my_addr.sin_family=AF」NET;

my_addr.sin_addr.S_un.S_addr=inet_addr("192.168.93.48");my_addr.sin_port=htons(1000);

//请求连接

printf(”connecting...");

sin_size=sizeof(structsockaddr_in);

if(sock2=(:

:

connect(sock1,(LPSOCKADDR)&my_addr,sin_size))==-1){

perror("Acceptingstreamsocket");

exit

(1);

}

}

II选择菜单

intmenu()

{

char*s=(char*)malloc(2*sizeof(char));

Menu\n\n\n");

intc;

printf("\n\n\n

printf("

*******************************

**\n\n");

printf("

*\n");

printf("*\n");

printf("*\n\n");

printf("

*******************************

**\n");

do

{

printf("\ngets(s);if(s[O]=='\O'){gets(s);

}

c=atoi(s);}while(c<0||c>3);free(s);returnc;

Client:

1.SendMessage

2.ReceiveMessage

*3.Exit

Enteryourchoice:

");

}

//消息发送函数

voidSend()

{

charMsg[10240];

printf("\nPleaseInputthemessage:

");

gets(Msg);

Msg[10239]='\0';

:

:

send(sock1,Msg,strlen(Msg),0);

}

//消息接收函数

voidReceive(){

 

intlen;

charbuf[10240];

for(inti=0;i<10240;i++){

buf[i]='\O:

}

if((len=:

:

recv(sock1,buf,10240,0))==-1)

{

perror("Recevingdataerror");exit

(1);

}

printf("TheReceivedMessage:

%s\n",buf);

}

//主函数

voidmain()

{

Init();

for(;;)

{

switch(menu())

{case1:

Send();break;

case2:

Receive();break;

case3:

exit(0);

}

}

:

:

closesocket(sock2);

:

:

closesocket(sock1);:

:

WSACleanup();

}

实验结果

Server端界面:

发送信息

曲E八计負■粗商4HI实瑩七HIi\Dflhnf\Clir*nt_pnn

Gonncm七d.nsi■…

Client:

Menu

1.Gan!

2.Beehive

3.E

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

当前位置:首页 > 工程科技 > 纺织轻工业

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

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