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

上传人:b****4 文档编号:1478427 上传时间:2022-10-22 格式:DOCX 页数:13 大小:109.10KB
下载 相关 举报
实验七简单的服务器客户端程序实验报告.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端程序并调试通过。

客户方

 

程序分两部分:

客户程序和服务器程序。

工作过程是:

服务器首先启动,它创建套接字之后等待客户的连接;客户启动后创建套接字,然后和服务器建立连接;建立连接后,客户接收键盘输入,然后将数据发送到服务器,服务器收到到数据后,将接收到的字符在屏幕上显示出来。

或者服务器接收键盘输入,然后将数据发送到客户机,客户机收到数据后,将接收到的字符在屏幕上显示出来。

2、编写用UDP协议实现的Client端和Server端程序并调试通过(做完第一个实验的基础上做该实验)。

服务器方

客户方

 

 

3、编写用TCP协议实现Client端与Server端的一段对话程序。

Server端根据用户的输入来提示Client端下一步将要进行操作。

 

实验内容:

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==(sock1=:

:

socket(AF_INET,SOCK_STREAM,0)))

perror("Createsocketerror!

");

my_addr.sin_family=AF_INET;

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("Acceptinganewconnet:

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

}

//选择菜单

intmenu()

{

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

intc;

printf("\n\n\nServer:

Menu\n\n\n");

printf("*********************************\n\n");

printf("*1.SendMessage*\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);

:

:

WSACleanup();

}

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==(sock1=:

:

socket(AF_INET,SOCK_STREAM,0)))

perror("Createsocketerror!

");

my_addr.sin_family=AF_INET;

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);

}

}

//选择菜单

intmenu()

{

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

intc;

printf("\n\n\nClient:

Menu\n\n\n");

printf("*********************************\n\n");

printf("*1.SendMessage*\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(sock1,Msg,strlen(Msg),0);

}

//消息接收函数

voidReceive()

{

intlen;

charbuf[10240];

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

buf[i]='\0';

}

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:

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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