创建服务器端口的监听套接口文档格式.docx
- 文档编号:22761017
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:13
- 大小:125.24KB
创建服务器端口的监听套接口文档格式.docx
《创建服务器端口的监听套接口文档格式.docx》由会员分享,可在线阅读,更多相关《创建服务器端口的监听套接口文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
注:
指导教师成绩60%,答辩成绩40%,总成绩合成后按五级制记入。
课程设计任务书
2011—2012学年第一学期
专业:
计算机科学与技术学号:
姓名:
课程设计名称:
课程设计Ⅲ课程设计
设计题目:
创建服务器端口的监听套接口
完成期限:
自2012年1月2日至2012年1月13日共2周
设计依据、要求及主要内容(可另加附页):
操作内容:
创建服务器端口的监听套接口。
从应用程序开发的角度出发,熟悉网络编程模式与编程接口,重点掌握基于TCP和UDP的套接字编程技术,最后了解TCP/IP协议的工作原理及关特性。
操作环境:
硬件包括PC机一台,要求联网。
软件包括WindowsXP操作系统,WindowsSocket,VC++6.0等等。
指导教师(签字):
教研室主任(签字):
批准日期:
年月日
摘要
本程序以VC++作为软件开发环境,从应用程序开发的角度出发,运用TCP(TransmissionControlProtocol)三次握手建立连接和连接释放等知识,并且基于TCP套接字编程技术,实现创建服务器端口的监听套接口,完成服务器对客户机的监听功能。
关键词:
TCP;
监听套接口;
VC++
目录
1.课题描述-1-
2.问题分析和任务定义-2-
3.逻辑设计-3-
4.详细设计-4-
4.1服务器端-4-
4.2客户端-7-
5.程序调试与测试结果-9-
6.总结-10-
参考文献-11-
1.课题描述
随着社会发展,Internent的迅速普及,客户服务器模式使用越来越多,尤其在通信上更是如此。
本次课题是创建服务器端口的监听套接口,要求从应用程序开发的角度出发,基于TCP和UDP的套接字编程技术,创建服务器端口并对客户机进行监听。
TCP协议是一种面向连接的、可靠的、基于字节流的运输协议,可以提供可靠地服务。
本课设采用TCP连接技术,通过端口之间发送和接受消息,来实现客户机的所有动作服务器都能知道,完成服务器对客户机的监听功能。
开发工具:
VC6.0
2.问题分析和任务定义
这次课设是要求通过创建服务器端口的监听套接口来实现服务器对客户机的监听。
本课设采用TCP协议来实现这个功能。
首先需要客户机和服务器进行连接,然后服务器才能对客户机进行监听。
而服务器如何和客户机进行连接,这需要创建套接字,通过TCP面向连接的三次握手技术来实现,并且设置TCP协议中的一些参数。
如果客户端没有和服务器连接成功,需要进一步分析是否重新连接或把连接失败结果显示出来。
等连接完成之后,服务器和客户机都需要相互之间发送消息以表示连接成功,在这里面需要发送函数和接受函数来实现这个功能,最后是释放客户端和服务器的连接,可以通过关闭套接字终止对套接字库的使用来实现。
3.逻辑设计
创建服务器端口的监听套接口程序由两大部分组成。
一个是服务器端,一个是客户机端。
在服务器端,需要进行八个步骤。
分别是:
1.加载套接字库
2.创建套接字(socket)
3.将套接字绑定到一个本地地址和端口上(bind)
4.将套接字设为监听模式,准备接受客户请求(listen)
5.等待客户请求的到来,请求连接完成后返回一个新的套接字(accept)
6.用返回的套接字和客户端进行通信(send/recv)
7.返回,等待另一个客户请求
8.关闭套接字(closesocket)
客户端程序需要五个步骤:
1.加载套接字库
2.创建套接字(socket)
3.向服务器发送连接请求(connect)
4.和服务器端进行通信(send/receive)
5.关闭套接字(closesocket)
4.详细设计
分为两大模块:
4.1服务器端
voidmain()
{
WORDwVersionRequested;
//加载套接字(winsock)库
WSADATAwsaData;
interr;
wVersionRequested=MAKEWORD(1,1);
//版本号为1.1
err=WSAStartup(wVersionRequested,&
wsaData);
if(err!
=0){
return;
}
if(LOBYTE(wsaData.wVersion)!
=1||HIBYTE(wsaData.wVersion)!
=1){
WSACleanup();
}
//创建套接字
SOCKETsockServer=socket(AF_INET,SOCK_STREAM,0);
//SOCK_STREAM参数设置为TCP连接
SOCKADDR_INaddrServer;
//设置服务器端套接字的相关属性
addrServer.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
//设置IP
addrServer.sin_family=AF_INET;
addrServer.sin_port=htons(1234);
//设置端口号
//将套接字绑定到本地地址和指定端口上
bind(sockServer,(SOCKADDR*)&
addrServer,sizeof(SOCKADDR))
//将套接字设置为监听模式,并将最大请求连接数设置成5,超过此数的请求全部作废
listen(sockServer,5);
SOCKADDR_INaddrClient;
//用来接收客户端的设置,包括IP和端口
intlen=sizeof(SOCKADDR);
while
(1)//不断监听
{
//得到创建连接后的一个新的套接字,用来和客户端进行沟通,原套接字继续监听客户的连接请求
SOCKETsockConn=accept(sockServer,(SOCKADDR*)&
addrClient,&
len);
if(sockConn!
=INVALID_SOCKET)//创建成功
{charsendInfo[100];
//inet_ntoa将结构转换为十进制的IP地址字符串
sprintf(sendInfo,"
welcometo%sthistest!
"
inet_ntoa(addrClient.sin_addr));
//成功建立连接后向客户端发送数据,结果将显示在客户端上
send(sockConn,sendInfo,strlen(sendInfo)+1,0);
//从客户端接收数据,结果显示在服务器上
charrecvInfo[100];
for(inti=1;
i<
=2;
i++)
{recv(sockConn,recvInfo,100,0);
printf("
%s\n"
recvInfo);
//将本次建立连接中得到套接字关闭
closesocket(sockConn);
}
else
interrCode=WSAGetLastError();
theerrcodeis:
%d\n"
errCode);
}}
//如果本程序不是死循环,那么在此处还应添加以下代码
closesocket(sockServer);
//对一直处于监听状态的套接字进行关闭
WSACleanup();
}//终止对winsocket库的使用
图4.1服务器端流程图图4.2客户端的流程图
4.2客户端
//加载套接字库
charmassage[100];
//版本好为1.1
=1||
HIBYTE(wsaData.wVersion)!
SOCKETsockClient=socket(AF_INET,SOCK_STREAM,0);
//服务器地址结构
addrServer.sin_addr.S_un.S_addr=inet_addr("
127.0.0.1"
);
//服务器地址
//服务器端口号
//与服务器端建立连接,进行通信
intconnReult=connect(sockClient,(SOCKADDR*)&
addrServer,sizeof(SOCKADDR));
if(connReult!
=WSAEADDRNOTAVAIL)//访问成功
//成功建立连接后向服务器端发送数据,结果将显示在服务器端上
charrecvInfo[100];
printf("
请输入要求:
\n"
gets(massage);
send(sockClient,massage,strlen(massage)+1,0);
recv(sockClient,recvInfo,100,0);
send(sockClient,"
thisiszhangsan!
strlen("
)+1,0);
//接收来自服务器端发送来的信息
%s\n"
%d/n"
closesocket(sockClient);
5.程序调试与测试结果
首先开启服务器端,然后再开启客户机端。
这面是在VC++6.0环境下运行服务器第一次监听的结果如图5.1所示:
图5.1服务器第一次监听结果
客户端口的运行结果如图5.2所示:
图5.2客户端界面
服务器端第二次监听结果如图5.3所示:
图5.3服务器第二次监听结果
客户端的运行结果如图5.4所示:
图5.4客户端的界面
6.总结
在这次课程设计中,我清楚的认识理论到到实践的重要性,经过实际的动手操作不仅提高了我的动手能力还提高了我把理论转化成实践的能力。
在这两周的编程中虽说有很多喜悦的成分,但兴奋过后才发现在周时间内实现预期的效果并不是自己想象的那样简单,非常的迷茫,幸亏身边的同学的帮助,老师的谆谆教导,自己的潜心研究让我度过了这个艰难的时期,顺利实现自己的预期效果。
这让我明白了无论做什么事都必须有恒心和毅力,然后加上正确的方法这样我一定能实现自己的目标。
随着社会发展,Internent的迅速普及,以及飞速发展,人们对实时通信的要求越来越迫切,需求日益增加,网络聊天已经成为了一大时尚,不少人都有这样的经历。
在对于服务器端口和客户端端口上,学会了很多知识,并且把自己再TCP和UDP的知识再次得到了巩固。
现在回顾两个星期以前,当一个星期前的现在,当看到老师布置给我们的这些题目时,我们都蒙了,这么难的题目我们怎么可能会编出来啊,我们都表示不满,抗议,可是一切都是徒劳,我们只能尽我们自己最大的努力把程序给写出来,回想这两周做课设的过程,从构思结构到想具体的程序,虽然很辛苦,但还是做了下了,在这里面收获了许多,也为今后的毕业论文打下基础。
参考文献
[1]萧秋水,文娟.网络编程之vc篇.北京.清华出版社.2001
[2]方敏,张彤.网络应用程序设计.安.安电子科技大学出版社.005
[3]黄超.windows下的网络编程.北京.人民邮电出版社.2003
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 创建 服务器 端口 监听 接口