实验七简单的服务器客户端程序实验报告Word格式文档下载.docx
- 文档编号:14855695
- 上传时间:2022-10-25
- 格式:DOCX
- 页数:13
- 大小:47.80KB
实验七简单的服务器客户端程序实验报告Word格式文档下载.docx
《实验七简单的服务器客户端程序实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《实验七简单的服务器客户端程序实验报告Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。
硬件:
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<
winsock.h>
windows.h>
stdio.h>
stdlib.h>
#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)))
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);
}
//开始侦听
listen(sock1,5))
Listeningstreamsocket"
//接受连接
Readytoserveclient.Pleaseconnect...\n\n\n"
sin_size=sizeof(structsockaddr_in);
if((sock2=accept(sock1,(structsockaddr*)&
their_addr,&
sin_size))==-1)
Acceptingstreamsocket"
printf(”}
〃选择菜单
intmenu()
Acceptinganewconnet:
%s"
inet_ntoa(their_addr.sin_addr));
char*s=(char*)malloc(2*sizeof(char));
intc;
\n\n\n
Server:
Menu\n\n\n"
*********************************\n\n"
*
1.Send
Message
*\n"
2.ReceiveMessage
3.Exit
*\n\n"
*********************************\n"
do
\nEnteryourchoice:
gets(s);
if(s[0]=='
\0'
){
c=atoi(s);
}while(c<
0||c>
3);
free(s);
returnc;
〃消息发送函数
voidSend()
charMsg[10240];
\nPleaseInputthemessage:
gets(Msg);
Msg[10239]='
;
send(sock2,Msg,strlen(Msg),0);
〃消息接收函数
voidReceive()
intlen;
charbuf[10240];
for(inti=0;
i<
10240;
i++){
buf[i]='
if((len=:
recv(sock2,buf,10240,0))==-1)
Recevingdataerror"
TheReceivedMessage:
%s\n"
buf);
〃主函数
voidmain()
Init();
for(;
switch(menu())
case1:
Send();
break;
case2:
Receive();
case3:
exit(0);
〃:
closesocket(sock2);
closesocket(sock1);
WSACIeanup();
Client端代码:
//client.cpp:
//
\n\n\nClient:
WSAStartup(wMinver,&
Startsocketerror);
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){
II选择菜单
Menu\n\n\n"
printf("
*******************************
**\n\n"
*\n"
*\n\n"
**\n"
\ngets(s);
if(s[O]=='
\O'
){gets(s);
}while(c<
free(s);
returnc;
Client:
1.SendMessage
*3.Exit
Enteryourchoice:
//消息发送函数
\nPleaseInputthemessage:
send(sock1,Msg,strlen(Msg),0);
//消息接收函数
voidReceive(){
charbuf[10240];
\O:
if((len=:
recv(sock1,buf,10240,0))==-1)
exit
(1);
//主函数
Init();
switch(menu())
{case1:
Send();
break;
Receive();
:
WSACleanup();
实验结果
Server端界面:
发送信息
曲E八计負■粗商4HI实瑩七HIi\Dflhnf\Clir*nt_pnn
Gonncm七d.nsi■…
Client:
Menu
1.Gan!
2.Beehive
3.E
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 简单 服务器 客户端 程序 报告