APP下载

网络通信编程教学设计与实现

2011-11-03黑龙江徐鉴

职业技术 2011年3期
关键词:服务器端网络通信聊天

黑龙江 徐鉴

网络通信编程教学设计与实现

黑龙江 徐鉴

交互性是程序设计最大特性,而使用网络通信技术是实现交互性的真正后台工具。本文介绍了VC++实现网络通信编程技术在教学中的实现。它是实现不同客户进行数据交互、网络通信的主要工具,并实现了多客户间的实时聊天。

交互性;VC++;网络通信

概述

网络通信主要是在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的。中间最主要的就是数据包的组装、过滤、捕获和分析等处理。

(1)Internet网络模型

网络模型:网络的结构原理和工作原理

OSI参考模型:七层

Internet网络模型:四层

网络协议:指定层上进行数据交换的规则

Internet的网络层协议:IP协议;DNS协议 (辅助协议)

Internet的传输层协议:TCP协议;UDP协议

(2)套接字基础

套接字(Sockets):应用程序和网络协议的接口

TCPSockets:使用TCP协议实现可靠的网络通信

UDPSockets:使用UDP协议实现效率较高的网络通信

(3)Visual C++

VisualC++是一个功能强大的、完全可扩展的Windows开发系统。具有强有力的Internet支持,同时WinSock规范给应用程序开发提供了一套简单的API,并制定了相应规范。

1Socket概论

Socket在计算机中提供了一个通信端口,可以通过它与任何一个具有Socket接口的计算机通信。应用程序在网络上传输,与使用文件句柄相似,可以对Socket句柄进行读、写操作。将Socket翻译为套接字,具体分为以下三种类型:

字节流套接字(StreamSocket) 它提供面向连接的、无差错的、先后顺序一致的、无记录边界和非重复的网络信包传输。是最常用的套接字类型,TCP/IP协议族中的TCP协议使用此类接口。

数据报套接字(DatagramSocket) 它是无连接的服务,它以独立的信包进行网络传输,信包最大长度为32KB,传输不保证顺序性、可靠性和无重复性,它通常用于单个报文传输或可靠性不重要的场合。TCP/IP协议族中的UDP协议使用此类接口,原始数据报套接字(RawSocket) 提供对网络下层通讯协议(如IP协议)的直接访问,它一般不是提供给普通用户的,主要用于开发新的协议或用于提取协议较隐蔽的功能。

图1 面向连接协议的SOCKET编程模型

2 常用Socket API

Socket API函数集

主要的系统调用包括:socket()-创建Socket;bind()-将创建的Socket与本地端口绑定;connect()与accept()-建立Socket连接;listen()-服务器监听是否有连接请求;send()-数据的可控缓冲发送;recv()-可控缓冲接收;closesocket()-关闭Socket。具体如下:

intbind(intsockfd,structsockaddr*my_addr,int addrlen);

intconnect(intsockfd,structsockaddr*serv_addr,intaddrlen);

intlisten(intsockfd,intbacklog);

intaccept(intsockfd,void*addr,int*addrlen);

intclose(sockfd);

int send(int sockfd,const void*msg,int len,int flags);

intrecv(intsockfd,void*buf,int len,unsigned int flags);

3 聊天程序的设计说明

聊天程序是以客户端程序登录服务器,服务器提供服务端连接响应,就可以与登录在同一服务器上的用户交谈。因此,程序要在TCP/IP环境下实现服务器端和客户端两部分程序。

(1)服务器端工作流程:服务器端通过socket()调用创建一个Socket数组后,与指定的本地端口绑定bind(),就可以在端口进行侦听listen()。如果有客户端连接请求,则选择一个空Socket,将客户端地址赋给这个Socket。然后登录成功的客户就可以聊天。

(2)客户端工作流程:客户端程序相对简单,只需要建立一个Socket与服务器端连接,成功后通过这个Socket来发送和接收数据。

4 核心代码分析(这里仅给出核心代码,其它的代码可以自行添加)

(1)服务器端代码

voidCChatServerDlg::UpdateUser(CClientSocket*pSocket)//聊天用户Socket信息更新

(2)客户端代码

[1]四维科技,等.VisualC++网络通信编程实用案例精选.人民邮电出版社,2006.

[2]李媛媛.VisualC++网络通信开发入门与编程实践.电子工业出版社,2008.

(作者单位:黑龙江省哈尔滨华夏计算机职业技术学院)

(编辑 王旸)

猜你喜欢

服务器端网络通信聊天
Linux环境下基于Socket的数据传输软件设计
基于网络通信的智能照明系统设计
网络通信中信息隐藏技术的应用
基于网络通信的校园智能音箱设计
谈计算机网络通信常见问题及技术发展
我就是不想跟你聊天了
敞开门聊天
基于Qt的安全即时通讯软件服务器端设计
基于Qt的网络聊天软件服务器端设计
基于C/S架构的嵌入式监控组态外设扩展机制研究与应用