实验七简单的服务器客户端程序实验报告Word下载.docx
- 文档编号:5824469
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:18
- 大小:159.31KB
实验七简单的服务器客户端程序实验报告Word下载.docx
《实验七简单的服务器客户端程序实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《实验七简单的服务器客户端程序实验报告Word下载.docx(18页珍藏版)》请在冰点文库上搜索。
4、熟悉
Socket
编程原理,掌握简单的套接字编程。
实验条件:
硬件:
PC
机(两台以上)、网卡、已经设定好的以太网环境
软件:
2008
实验原理:
1、编写用
协议实现的
Client
端和
Server
端程序并调试通过。
Socket()建立流式套接字,返回套接字号。
客户方
bind(),套接字
s
与本地地址相连。
Socket(),建立流失套接字,
listen(),通知
TCP,服务器准备好接收连接。
返回套接字号
accept(),接受连接,等待客户端的连接...
connect(),将套接字
与远
地主机连接
连接建立,accept()返回,得到新的套接字,sc
recvt()/send(),在套接字
sc
上读/写数据,直到
send()/recv(),在套接字上读
数据交换完毕
/写数据,直到数据交换完
closesocket(),关闭套接字
closesocket(),关闭套接字
结束
对话
closesocket(),关闭最初套接字
s,服务结束
洛阳理工学院
实验报告
1
/
10
程序分两部分:
客户程序和服务器程序。
工作过程是:
服务器首先启动,它创建套接字之后等待客户的连接;
客户启动后
创建套接字,然后和服务器建立连接;
建立连接后,客户接收键盘输入,然后将
数据发送到服务器,服务器收到到数据后,将接收到的字符在屏幕上显示出来。
或者服务器接收键盘输入,然后将数据发送到客户机,客户机收到数据后,将接
收到的字符在屏幕上显示出来。
2、编写用
端程序并调试通过(做完第一个实验的
基础上做该实验)。
服务器方客户方
recvt()/send(),在套接字上读/写数据,直到数据
交换完毕
将套接字与远地主机连接
3、编写用
协议实现
端与
端的一段对话程序。
端根据用户的
输入来提示
端下一步将要进行操作。
2
实验内容:
Sever
端代码:
//
server.cpp
:
定义控制台应用程序的入口点。
#include
<
winsock.h>
windows.h>
stdio.h>
stdlib.h>
#pragma
comment(lib,
"
WS2_32"
)
SOCKET
sock1,sock2;
int
sin_size
;
struct
sockaddr_in
my_addr,their_addr;
char
name[20];
//初始化函数
Tcp
void
Init()
{
printf("
\n\n\nServer:
TCP\n\n\n"
);
//建立套接字
const
WORD
wMinver=0x0101;
WSADATA
wsadata;
if(0!
=:
WSAStartup(wMinver,&
wsadata))
perror("
Start
socket
error!
if(INVALID_SOCKET==(sock1=:
socket(AF_INET,SOCK_STREAM,0)))
Create
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,(struct
sockaddr*)&
my_addr,sizeof(my_addr)))
Binding
stream
socket"
exit
(1);
}
//开始侦听
listen(sock1,5))
Listening
3
//接受连接
Ready
to
serve
client.
Please
connect...\n\n\n"
=
sizeof(struct
sockaddr_in);
if((sock2=accept(sock1,(struct
sockaddr
*)&
their_addr,&
sin_size))==-1)
Accepting
Accepting
a
new
connet:
%s"
inet_ntoa(their_addr.sin_addr));
//选择菜单
menu()
*s=(char*)malloc(2*sizeof(char));
c;
Menu\n\n\n"
*********************************\n\n"
*1.SendMessage*\n"
*2.ReceiveMessage*\n"
*3.Exit*\n\n"
*********************************\n"
do
\nEnter
your
choice:
gets(s);
if(s[0]=='
\0'
){
c=atoi(s);
}while(c<
0||c>
3);
free(s);
return
//消息发送函数
Send()
Msg[10240];
\nPlease
Input
the
message:
gets(Msg);
Msg[10239]='
4
send(sock2,Msg,strlen(Msg),0);
//消息接收函数
Receive()
len;
buf[10240];
for(int
i=0;
i<
10240;
i++){
buf[i]='
if((len=:
recv(sock2,buf,10240,0))==-1)
Receving
data
error"
The
Received
Message:
%s\n"
buf);
//主函数
main()
Init();
for(;
switch(menu())
case
1:
Send();
break;
2:
Receive();
3:
exit(0);
//:
closesocket(sock2);
closesocket(sock1);
5
WSACleanup();
client.cpp
//
\n\n\nClient:
my_addr.sin_addr.S_un.S_addr=inet_addr("
192.168.93.48"
//请求连接
connecting..."
if(sock2=(:
connect(sock1,(LPSOCKADDR)&
my_addr,sin_size))==-1)
6
*********************************\n\n"
*1.SendMessage
*\n"
*2.ReceiveMessage
*3.Exit
*\n\n"
*********************************\n"
send(sock1,Msg,strlen(Msg),0);
7
recv(sock1,buf,10240,0))==-1)
8
实验结果
端界面:
发送信息
接收信息
9
实验总结
在老师的精心指导和自己的努力下最终成功完成了本次的实验内容,虽然在
过程中遇到好多问题,在老师和同学们的帮助下最后顺利完成。
在此试验中通过
老师的讲解和自己的动手操作,
通过本次实验我了解了一些
路由器的基本配置
,
也学会使用了
子网划分的一些基本知识
,对计算机网络的学习更加感兴趣。
10
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 简单 服务器 客户端 程序 报告