visualc网络编程案例实战之网络通信器x

visualc网络编程案例实战之网络通信器x

ID:39992216

大小:1004.23 KB

页数:49页

时间:2019-07-16

visualc网络编程案例实战之网络通信器x_第1页
visualc网络编程案例实战之网络通信器x_第2页
visualc网络编程案例实战之网络通信器x_第3页
visualc网络编程案例实战之网络通信器x_第4页
visualc网络编程案例实战之网络通信器x_第5页
资源描述:

《visualc网络编程案例实战之网络通信器x》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第7章网络通信器现在,有许多即时通信软件在大家的生活中非常常见,并且起着很大的作用。即时通信软件可以让用户之间快速地进行交流沟通,也正是因为这个原因使人们对即时通信软件的需求非常大,对其功能要求也很苛刻。在本章中,将向用户介绍实现即时通信功能的软件编程方法以及通信原理。7.1通信原理网络通信软件的数据通信是通过网络套接字进行的。根据该原理,其编程步骤应分为创建套接字、在套接字上进行收发数据、关闭套接字等操作。在这里需要用户注意:如果在服务器端进行编程,成功创建套接字以后,需要将本地地址与端口号绑定到已经创建的套接字上。在VC中,创

2、建基于对话框模式的应用程序,利用资源管理器对程序界面进行整理,使界面整齐、美观。但是,限于笔者的美工水平,所设计出来的程序界面仅供用户学习和参考,笔者主要讲述程序设计方法等。如果用户对界面不够满意,可以对随书光盘中的本实例界面重新进行设计。注意:用户在实际使用时,应该首先启动服务器,然后再启动客户端。否则,客户端将不能连接服务器。7.1.1通信连接在通信软件初始化时,客户端连接服务器的过程是该应用程序初始化的第一步,也是很重要的一步。客户端利用API函数创建套接字,需要对套接字库进行初始化。代码如下:01...//省略部分代码0

3、2WSADATAdata;03DWORDss=MAKEWORD(2,0);//指定套接字库版本号04::WSAStartup(ss,&data);//初始化套接字库当程序正常退出或者遇到其他情况退出时,用户应该对已经初始化的套接字库进行释放。示例代码如下:01...//省略部分代码02WSACleanup();//释放套接字库1.创建套接字用户对套接字库初始化成功后,便可以调用前面所介绍的函数创建套接字了。对于服务器和客户端而言,服务器的套接字分为连接套接字和数据收发套接字。因为作为服务器不可能只响应一个客户端的连接请求,所以创建

4、连接套接字对所有的连接请求进行响应。下面,将分别向用户介绍创建客户端和服务器端套接字的具体方法。(1)创建客户端套接字对于创建客户端套接字,需要用户指定协议类型。代码如下:01...//省略部分代码02SOCKETs;//声明套接字对象03s=::socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);//创建套接字,并返回其句柄(2)创建服务器套接字与客户端创建套接字不同。首先,服务器需要创建一个专门用于响应客户端连接请求的连接套接字。然后,将该套接字与本地地址绑定在一起。最后,在该套接字上进行监听。代码

5、如下:01...//省略部分代码02SOCKADDR_INaddr;03s1=::socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);//创建连接套接字对象04addr.sin_family=AF_INET;//填充套接字地址结构05addr.sin_port=htons(80);06addr.sin_addr.S_un.S_addr=inet_addr(strIP);07::bind(s1,(sockaddr*)&addr,sizeof(addr));//绑定套接字与本地地址08::listen(s,

6、5);//监听套接字其中,变量strIP表示本地IP地址。用户可以通过gethostbyname()等函数获取本地IP地址。代码如下:01charname[20]="";02gethostname(name,20);//获得主机名字03hostent*p=gethostbyname(name);04LPSTRlpAddr=p->h_addr_list[0];05IN_ADDRinAddr;06//从lpaddr所指内存复制4个字节到inAddr中07memmove(&inAddr,lpAddr,4);08//将网络字节序转化为主机

7、字节序09CStringipAddress=inet_ntoa(inAddr);//获得主机IP地址当服务器端监听到客户端的连接请求以后,可以调用函数accept()完成整个连接过程,并返回一个新的套节字。服务器收发数据都是通过这个新套接字进行的。代码如下:01SOCKETs1=::accept(s,NULL,NULL);//返回数据收发套接字02//获取连接客户端的IP03getpeername(s1,(SOCKADDR*)&add,(int*)sizeof(add));通过以上代码,用户可以清楚地看到本地IP地址和与服务器连接

8、的客户端IP等信息。函数accept()只能在服务器端进行调用,因为该函数仅用于响应客户端连接请求。2.连接套接字在客户端中,套接字创建完成以后,用户需要通过该套接字向服务器发出连接请求。通常,该操作由函数connect()进行,该函数返回–1,表

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。