- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机网络实践设计报告
学院: 计算机 班级: 成教2012业余 教师: 李领治
学号: 姓名: 成绩:
实验目的:
掌握Winsock2.0套接字编程技术的基本方法。
实验要求:
运用TCP/IP Winsock2.0套接字编程技术,使用VC编写一个面向连接通信的服务端程序与客户端程序,服务器先与端口3000绑定,然后等待客户连接,连接成功后就可与客户端互相收、发信息。交互中,通信任一方只要发送 bye, 通信过程便自动结束。
实验源程序:
服务器程序:
#pragma comment (lib, Ws2_32.lib) //Winsock 2 函数库
//-------------------------------------------------------
#include conio.h
#include stdio.h
#include winsock2.h //Winsock 2 函数头文件
//-------------------------------------------------------
bool InitSocket();
int main(int, char**)
{
struct sockaddr addr;
int len;
bool over;
char msg[255];
SOCKET sock, sersock;
if( !InitSocket() ) return 0;
//加载初始化 Winsock 2 动态链接库 Ws2_32.dll
sock = socket( AF_INET,SOCK_STREAM,0 );
//创建监听的流套接口
if( sock==INVALID_SOCKET ){ //不能创建,返回
printf(不能创建Socket!\n);
getch();
WSACleanup( ); //卸载Winsock 2动态链接库Ws2_32.dll
return 0; }
//设置本服务器IP地址和端口号
((sockaddr_in*)addr)-sin_family = AF_INET;
//AF_INET:使用Internet 协议
((sockaddr_in*)addr)-sin_port = htons(3000);
//服务器端口号3000
((sockaddr_in*)addr)-sin_addr.s_addr = inet_addr(127.1.1.1);
//主机地址
//把套接口与地址绑定
bind(sock,addr,sizeof(addr));
//服务进程准备接收套接口上的连接请求
listen(sock,1); //监听方式,准备接收连接请求:1--允许等待队列中的连接请求1个
//接受网络连接,生成新的套接口sersock标识这一连接
printf(等待客户连接!\n);
len = sizeof(addr);
sersock = accept( sock,addr,len );
//从等待队列中检取连接请求,如队列空则进程阻塞等待;
//如不空,则接受客户连接,使用返回连接套接口sersock与该客户连接。
//原套接口sock可继续监听其它客户请求。
if(sersock==INVALID_SOCKET) { //若套接口sersock 出错
DWORD err = WSAGetLastError();
char txt[100];
sprintf(txt,error when accept!---errno:%d,err);
printf(txt);
getch();
closesocket(sock); //关闭监听套接口sock
WSACleanup( ); //卸载Winsock 2动态链接库Ws2_32.dll
return 0;
}
printf(有客户连接!\n输入bye通信结束\n);
over = false; //状态设置为未结束
//与客户交互会话,直至任一方打入bye后退出循环
do{
printf(\n等待对方用户输入信息......);
len = recv ( sersock,msg,200,0 );
文档评论(0)