基于WinSock的网络应用程序的开发研究

时间:2022-08-16 11:44:08

基于WinSock的网络应用程序的开发研究

摘要:伴随着互联网技术的进步和信息技术的发展,网络应用程序的开发越来越普遍,应用越来越广泛。文章以基于WinSock的网络应用程序的开发研究为中心话题,重点介绍了套接字的相关知识、面向连接的套接字编程原理等内容。其中包括套接字的概念、套接字的分类、服务器端程序关键代码的实现、客户机端程序关键代码的实现等方面。希望能够引起人们对网络应用程序开发的进一步重视,对实际工作能够发挥一定的指导作用。

关键词:网络应用程序;套接字;编码;服务器端程序

中图分类号:TP311.10 文献标识码:A 文章编号:1674-7712 (2012) 16-0077-01

一、引言

近年来,计算机技术取得了突飞猛进的发展,与之相伴的网络应用软件的开发也越来越多,生产实践也需要更多的网络应用软件,以满足人们的实际需求。在这样的背景之下,各种各样的网络编程技术相继出现,并得到了运用和发展。在网络应用程序开发中,使用套接字的方式,进而实现互联网上的进程通讯,以达到网络应用的各种功能,这是目前在网络应用程序开发中的一种十分重要的方法,也具有广泛的应用。文章主要介绍基于WinSock的网络应用程序的开发问题,希望能够引起人们对这一网络应用程序开发的重视。

二、套接字的相关知识

套接字的相关知识比较多,在这里不一一介绍,重点介绍它的概念和分类。

(一)套接字的概念

网络编程,也就是人们所说的编写基于互联网的应用程序。首先,这个程序需要形成网络通讯管道,它是利用TCP/IP协议栈形成的,使得网络上的通讯得以完成。只有这些事情完成之后,才能开发网络应用程序。在网络应用开发的过程中,套接字是使得进程通信得以实现的得力工具。从使用的效果来看,套接字是进程通信断点的抽象,它能够提供交换数据机制。从实现上来说,套接字不是别的东西,而是一个软件机构,在这个机构里面,包含着一定的数据结构。而从使用上来说,套接字就是一个编程的接口,好比插座一般,使得机器的用电变得十分方便。为了能够比较方便的网络通讯功能,程序通过绑定套接字的方式进行。在位置上,套接字位于通讯域中,在同一个域中,不同的套接字之间进行数据的交换。事实上,Socket能够使用的通讯协议栈不仅一种,而是多种多样的。在网路层,IP寻找路由,实现数据在不同主机之间的交换。而在传输层,它是通过端口,从而实现端到端的传输服务。

(二)套接字的分类

在套接字的分类上,主要包括两种:流式套接字和数据报套接字,用户可以根据实际情况进行选择。第一、流式套接字具有以下特点:它与电话系统比较相类似,并且能够提供流传输服务,这种服务既是可靠的,同时也是面向连接的。要实现完整的数据传输,都有必要经过以下三个程序:建立连接、使用连接、终止连接。从本质上来看,连接是一个管道,数据连接的时候,它是从一端流入,从另外一端流出的过程,只不过是顺序不一致而已,但是内容相同,正因为这样,流式套接字在实践中的运用越来越广泛。第二、数据报套接字具有以下几个特点:它能够提供数据报传输服务,并且这种服务是无连接的,它能够支持双向的数据流。数据的传输与邮政系统有点类似,它是通过相互独立的数据报进行传输的。数据报套接字在传输的过程中,各分组在系统中是独立的,不过不能保证分组的先后顺序,对于出错的分组也不能进行恢复或者是重新传输。

三、面向连接的套接字编程原理

面向连接的套接字编程原理比较复杂,文章主要从以下两个方面进行介绍,服务器端和客户机端程序关键代码的实现。

(一)服务器端程序关键代码的实现

在程序启动的时候,对于面向连接的套接字编程。服务器和客户机都有必要通过WSAStartup(),这样才能够完成对Windows Socket DLL的加载,并且还能够对套接字的版本进行立即的检查,当对WSAStartup()的调用成功之后,在这个时候,应用程序才可以调用Windows Socket DLL中的其他函数。当上述步骤完成之后,接下来是定义服务器端的地址和端口号。完成对结构对象各成员的设置。当服务器端套接字调用完listen()函数之后,然后有必要完成accept()函数的调用。在该系统中,进行的是有连接的数据传输,所以,如果有数据到达的话,只需要调用recv()函数,从套接字将数据取出来就可以了,既能够实现通讯和所要达到的目的。

(二)客户机端程序关键代码的实现

事实上,在编程方面,与服务器端的设计相比而言,面向连接套接字的客户机端的设计要简单得多。它的操作比较简单,只要在流式套接字创建完成之后,调用connect()函数,向在其启动之前就工作的服务器套接字提出连接请求,然后成功返回,通过这样的操作就能够完成与服务器的连接工作。当连接建立之后,就可以实现与服务器数据的传输,这个传输是通过recv()函数和send()函数实现的。值得注意的是,客户机在调用connect()函数的时候,有必要通过参数指出相关的信息,比如服务器的IP地址,端口号等等。

四、结束语

通过上述的介绍我们可以得知,在网络应用程序的开发中,使用Socket能够收到良好的效果,能够屏蔽网络低层复杂的结构和协议。这样一来,使用Socket开发的软件适用性比较强,能够在各种网上运行,从而不必要担心是什么类型的网络或者是服务器。并且,该应用软件可以比较容易的实现异构网的互连,操作也简单方便。除此之外,使用Socket开发的网络应用软件还有一个显著的特点,那就是程序的结构十分清楚明了,升级和维护也十分方便,在实践中值得进一步推广和应用。

参考文献:

[1]赵志诚,徐玉斌,高慧敏,曾建潮.基于C/S模式的Winsock网络通信程序的开发[J].计算机工程,2000(4).

[2]李镭,喻金科,肖永生.基于Delphi下Winsock的应用程序开发与研究[J].南昌航空工业学院学报(自然科学版),2006(3).

[3]樊佩佩,王平岗.基于VB的Winsock控件远程通信的实现[J].邢台职业技术学院学报,2011(5).

[4]蒋东兴,林鄂华,陈祺德.WindowsSockets网络程序没计大全[M].北京:清华大学出版社,1999.

[5]赵晓辉,危建国.基于WinSock的网络应用程序的开发[J].西南民族大学学报(自然科学版),2007(1).

上一篇:烟草工业生产制造执行系统研究 下一篇:中美高校基金会比较研究