我曾用VB做了个局域网聊天的小程序,那时只是模仿一个源码抄写的,代码量也很少,一共也只不过两百行的代码,且只能两个人对聊,用的是VB中的一个WINSOCK控件,那时其实对WINSOCK网络编程一无所知,正好现在正在学网络编程,本想用C#来实现,但想想用C#再做个QQ类似的东西价值不大,加上我这段时间正想好好学习JAVA,于是趁热打铁,既熟悉了网络编程,又可以学习JAVA编程,一举两得,何乐而不为呢?
首先,介绍一下关于网络编程的一些知识:
用Java开发网络软件非常方便和强大,Java的这种力量来源于他独有的一套强大的用于网络的 API,这些API是一系列的类和接口,均位于包java.net和javax.net中。在这篇文章中我们将介绍套接字(Socket)慨念,同时以实例说明如何使用Network API操纵套接字,在完成本文后,你就可以编写网络低端通讯软件。
什么是套接字(Socket)?
Network API是典型的用于基于TCP/IP网络Java程序与其他程序通讯,Network API依靠Socket进行通讯。Socket可以看成在两个程序进行通讯连接中的一个端点,一个程序将一段信息写入Socket中,该Socket将这段信息发送给另外一个Socket中,使这段信息能传送到其他程序中。如图1
![]() |
我们来分析一下图1,Host A上的程序A将一段信息写入Socket中,Socket的内容被Host A的网络管理软件访问,并将这段信息通过Host A的网络接口卡发送到Host B,Host B的网络接口卡接收到这段信息后,传送给Host B的网络管理软件,网络管理软件将这段信息保存在Host B的Socket中,然后程序B才能在Socket中阅读这段信息。
假设在图1的网络中添加第三个主机Host C,那么Host A怎么知道信息被正确传送到Host B而不是被传送到Host C中了呢?基于TCP/IP网络中的每一个主机均被赋予了一个唯一的IP地址,IP地址是一个32位的无符号整