一篇介绍 Java Socket 编程的经典文章
2007-11-13 10:43 作者: dxaw 出处: 赛迪网 责任编辑:>幽灵
事实上网络编程简单的理解就是两台计算机相互通讯数据而已。对于程序员而言,去掌握一种编程接口并使用一种编程模型相对就
会显得简单的多了。Java SDK 提供一些相对简单的 Api 来完成这些工作,Socket 就是其中之一。
对于 Java 而言。这些 Api 存在与 Java.net 这个包里面。因此只要导入这个包就可以准备网络编程了。网络编程的基本模型就是客
户机到服务器模型。简单的说就是两个进程之间相互通讯,然后其中一个必须提供一个固定的位置,而另一个则只需要知道这个固定的
位置,并去建立两者之间的联系。然后完成数据的通讯就可以了。这里提供固定位置的通常称为服务器,而建立联系的通常叫做客户端。
基于这个简单的模型,就可以进入网络编程。
Java 对这个模型的支持有很多种 Api.而这里我只想介绍有关 Socket 的编程接口。对于
Java 而言已经简化了 Socket 的编程接口。首先我们来讨论有关提供固定位置的服务方是如
何建立的。Java 提供了 ServerSocket 来对其进行支持。事实上当你创建该类的一个实力对
象并提供一个端口资源你就建立了一个固定位置可以让其他计算机来访问你。
以下是引用片段:
ServerSocketserver=newServerSocket(6789);
这里稍微要注意的是端口的分配必须是唯一的。因为端口是为了唯一标识每台计算机唯一服务的。另外端口号是从 0~65535 之间的,
前 1024 个端口已经被 Tcp/Ip 作为保留端口,因此你所分配的端口只能是 1024 个之后的。
好了。我们有了固定位置。现在所需要的就是一根连接线了。该连接线由客户方首先
提出要求。因此 Java 同样提供了一个 Socket 对象来对其进行支持。只要客户方创建一个
Socket 的实例对象进行支持就可以了。
以下是引用片段:
Socketclient=newSocket(InetAddress.getLocalHost(),5678);
客户机必须知道有关服务器的 IP 地址。对于着一点 Java 也提供了一个相关的类 InetAddress 该对象的实例必须通过它的静态方法
来提供。它的静态方法主要提供了得到本机 IP 和通过名字或 IP 直接得到 InetAddress 的方法。
好了,上面的方法基本可以建立一条连线让两台计算机相互交流了。可是数据是如何传输的呢?事实上 I/O 操作总是和网络编程息息
相关的。因为底层的网络是继续数据的。除非远程调用,处理问题的核心在执行上。
否则数据的交互还是依赖于 IO 操作的。所以你也必须导入 Java.io 这个包。Java 的 IO
操作也不复杂。它提供了针对于字节流和 Unicode 的读者和写者,然后也提供了一个缓冲
用于数据的读写。
以下是引用片段:
BufferedReaderin=newBufferedReader(newInputStreamReader(server.getInputStream()));
PrintWriterout=newPrintWriter(server.getOutputStream());
评论0