- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于TCP-UDP通讯的客户-服务器(CS)程序的实验(实现过程)
实训 TCP 与 UDP
动手实践
实验目的
学习基于TCP/IP的网络编程,掌握TCP的连接过程。
实验环境
满足C++程序编译条件的计算机一台。可安装vc 6.0或者vs 2005。
实验步骤
创建服务器端程序(vc 6.0)
首先创建一个win32控制台空项目TCPserver
添加程序文件server.cpp
分析下面程序,并把它复制到server.cpp文件中
#include Winsock2.h
#include stdio.h
void main()
{
WORD wVersionRequested;
//定义一个word类型的变量,用于指定准备加载的winsock库的版本
WSADATA wsaData;
//定义一个WSADATA类型的结构体变量,用以加载套接字库,并指定连接的版本号
int err;
wVersionRequested = MAKEWORD(1,1);//请求一个1.1版本的套接字库
err = WSAStartup( wVersionRequested,wsaData );
//请求加载,如winsock没有正确初始化或者没有被找到,则返回“WSASYS NOT READY”
if ( err != 0 ){
return;
}
//初始化失败,则退出程序
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ){
WSACleanup();
return;
}
//winsock初始化成功后判断版本号(高字节+低字节)是否与请求版本号相同,如不相同,则停止调用
SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);
/*创建一个套接字socket(AF_INET,SOCK_STREAM,0);第一个参数用来指定地址族,
对于TCP/IP协议的套接字,它只能是AF_INET(PF_INET),第二个参数用来指定socket类型,
SOCK_STREAM指的是采用基于TCP/IP协议的套接字,SOCK_DGRAM为UDP协议的,第三个参数
是与特定的地址家族相关的协议,如果为0,则自动选择*/
//调用成功后会返回一个新的socket数据类型的套接字,需要绑定到本地的IP和端口
SOCKADDR_IN addrSrv;//定义一个地址结构体变量
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
//获取本地任何一个可用IP地址,如需指定,则可调用inet_addr()函数
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);//指定端口号,转换成2进制
bind(sockSrv,(SOCKADDR*)addrSrv,sizeof(SOCKADDR));
//把套接字sockSrv绑定到本地的IP和端口
listen(sockSrv,5); //监听连接请求,5为最大等待连接数
SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
//下面的循环为不断监听连接请求
while(1)
{
SOCKET sockConn=accept(sockSrv,(SOCKADDR*)addrClient,len);
//接受客户机的连接请求并获取客户机的套接字等信息
bool flag=1;//定义一个开关变量,初始置开
while(flag)//循环用于维护当前连接的客户机
{
//获取请求连接计算机的套接字,IP和端口号
char recvBuf[100];//定义一个字符数组,用来保存客户机传递过来的消息
recv(sockConn,recvBuf,100,0);//接受客户机信息
if(recvBuf[0]==q)//如果客户机退出连接,则关闭socket连接
{
flag=0;//开关置闭
closesocket(sockConn);
continue;
}
printf(%s\n,recvBuf);//输出客户机发来的消息
char sendBuf[100];//用来存储发给客户机的消息
printf(Please input data:\n);
gets(sendBuf);//键盘输入
send(sockConn,sendBuf,strl
您可能关注的文档
- 基于JSP的在线书店销售系统设计与实现中文文献摘要1.doc
- 基于JSP的进销存管理系统论文缩写(中英文).doc
- 基于Joomla医药知识自助查询系统的开发与设计(原稿).doc
- 基于LabVIEW和声卡的虚拟示波器设计开题报告.doc
- 基于Java的网站开发.doc
- 基于JAVASWING的KTV包房管理系统毕业设计.doc
- 基于LabVIEW 的单片机数据采集系统设计与实现.doc
- 基于labview的虚拟仪器 毕业设计开题报告.doc.doc
- 基于JSP(java)基金管理系统的设计和实现.doc
- 基于labview的电压表设计.doc
- 2022-2023学年山西省大同市浑源县人教PEP版三年级下册期中教学质量监测英语试卷.docx
- 山西省吕梁市2023-2024学年高三年级模拟练习卷三.docx
- 海南省海口市第一中学2023-2024学年高二年级下学期四月月考生物试题A卷.docx
- 海南省海口市海南师范大学附属中学2023-2024学年高一年级下学期第一次月考生物 试题A卷【含答案】.docx
- 海南省海口市第一中学2023-2024学年高二年级下学期四月月考生物试题B卷.docx
- 山东省菏泽市单县2022-2023学年一年级下学期期中数学试卷.docx
- 江苏省南通市五年级英语素养模拟测试(二).docx
- 2022-2023学年吉林省白城市通榆县通榆县育才学校部编版五年级下册期中考试语文试卷.docx
- 2022-2023学年河南省洛阳市伊川县外研版(三起)五年级上册期末质量调研检测英语试卷(含听力音频)【含答案】.docx
- 2022-2023学年广东省江门市新会区会城镇城南小学粤人版五年级下学期3月月考英语试卷.docx
文档评论(0)