许文勇
摘 要:科学技术的不断发展推动了网络信息化时代的发展,随着计算机技术不断的发展,各种网络编程技术日新月异。本文介绍了Socket网络编程的基本概念,以及实现Socket编程的基本原理,通给出一个基于TCP协议实例,来说明实现网络编程。
关键词:Socket;网络编程技术;通信
随着科学技术的发展,计算机网络编程技术在人们的日常生活中的应用也越来越普遍了通过网络使用通信协议实现进程间的通信,TCP/IP就是网络上常用的协议之一,在进行网络编程程序设计时,TCP/IP协议的核心内容受到操作系统的控制。网络编程程序必须通过协议来实现自己的功能,靠系统提供的 TCP/IP协议来完成编程程序。
1 Socket网络编程的基本概念
Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket[1]接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。Socket可以看成在两个程序进行通讯连接中的一个端点,是连接应用程序和网络驱动程序的桥梁,Socket在应用程序中创建,通过绑定与网络驱动建立关系。此后,应用程序送给Socket的数据,由Socket交网络驱动程序向网络上发送出去。计算机从网络上收到与该Socket绑定IP地址和端口号相关的数据后,由网络驱动程序交给Socket,应用程序便可从该Socket中提取接收到得数据,网络应用程序就是这样通过Socket进行数据的发送与接收的。
1.1 关于地址
一个程序要想与另一个程序通信,就要给计算机提供足够的信息,使其能找到另一个程序。在TCP/IP协议中,有两部分信息用来定位一个指定的程序,互联网地址(Internet address)和端口号(port number)。其中互联网地址由IP协议使用,而附加的端口号地址信息由传输协议使用(TCP/IP协议)解析。
1.2 套接字
Socket(套接字)是一中比较抽象的东西,利用编程程序来接受数据[2]。计算机网络编程程序根据TCP/IP协议中系统提供的程序来完成套接字的通讯。每一台计算机都有一个标识来识别计算机的应用程序。如果一个端口确定了一台主机上的一个套接字,那么主机中的多个程序可以对同一个套接字进行访问。在实际应用中,访问相同的套接字的不同程序一般属于同一个应用。Socket套接口有3种类型。一种SOCK_STREAM流式套接口,面向连接的,可靠地,TCP。第二种是SOCK_DRAM数据报套接口,面向无连接,不可靠,UDP。第三种是原始套接口,主要用于新的网络协议实现的测试。
2 Socket编程主要流程
编程分为服务器端和客户端两个方面。在进行Socket编程的时候,首先创建服务器套接字,服务器端通过Socket()建立一个套接字,然后通过bind()将创建的套接字绑接到要联系的IP地址和端口上,调用listen()监听链接请求,客户端通过接受指令,通过Socket()建立一个套接字,利用界面上的“connect”按钮,调用Connect()像服务器请求连接。在客户端完成Connect指令后,服务器端调用[3]accept()接受请求并返回新的套接字,通过返回的套接字与客户端进行通信,当在客户端点击Send()指令时,服务器端就得调用receive()指令接受信息。在完成通信交流后,服务器端与客户端调用Close()关闭Socket(),宠儿终端连接。例如Daytime服务器,如下图所示。
3 Socket网络编程技术实现
public static synchronized void setSocketFactory(SocketImplFactory fac) throws IOException 这个方法设置系统(system)的服务器SocketImplFactory,这是用于创建
ServerSocket对象的类库。它与创建Socket对象的类库有所不同,尽管语法是相似的。可以用一个库创建Socket对象,用另一个库创建ServerSocket对象。但是在程序也可以只设置这个类库一次。试图第二次设置SocketImplFactory时会触发一个SocketException。
protected final void implAccept(Socket s) throws IOException ServerSocket的子类使用这个方法实现accept()。可以把未连接的Socket对象传递到implAccept()(这样做同样要求实现Socket子类,因为标准的java.net.Socket类没有提供创建未连接套接字的工具)。当此方法返回时,Socket变量s就连接到客户机上。
4 结束语
Socket网络编程技术运用为人们通过计算机网络进行交流提供了便利。随着科学技术的发展,Socket网络编程技术也要与时俱进,不断创新,为计算机网络信息化发展提供动力。
[参考文献]
[1]周炎涛,李立明.TCP/IP协议下网络编程技术及其实现[J].航空计算技术,2011,09(03):33-34.
[2]周小松,朱雄军.基于UDP协议的Socket网络编程模式的实现[J].武汉职业技术学院学报(综合版),2011,05(01):36-38.
[3]程咏喜,蒋珉.基于TCP/IP协议的WinSock网络编程及应用[J].计算机时代,2012,06(07):12-14.endprint