网络上的两个程序通过一个双向通信连接实现数据的交换,这个双向链路的每一端称为一个Socket。Socket通常用来实现客户端和服务端的连接。Socket是TCP/IP协议的一个十分流行的编程接口,一个Socket由一个IP地址和一个端口号唯一确定。但是Socket不光支持TCP/IP这一种协议,所以这两者之间是没有必然联系的。在Java环境下,Socket编程主要是指基于TCP/IP的网络编程。
1.Socket的通信过程
首先Server(服务器)端Listen(监听)某个端口是否有连接请求,然后Client(客户)端向Server端发出Connect(连接)请求,最后Server端向Client端发回Accept(接受)消息。这样,一个连接就建立起来了。Server端和Client端都可以通过Send()和Write()等方法与对方进行通信。
对于一个功能齐全的Socket,其工作过程包含以下四个基本步骤。
(1) 创建Socket。
(2) 打开连接到Socket的输入/出流。
(3) 按照一定的协议对Socket进行读/写操作。
(4) 关闭Socket。
2.创建Socket
通过在包java.net中提供的类来表示双向连接的客户端,在里面包含了如下构造方法。(www.xing528.com)
■ Socket(InetAddress address,int port)。
■ Socket(InetAddress address,int port,boolean stream)。
■ Socket(String host,int prot)。
■ Socket(String host,int prot,boolean stream)。
■ Socket(SocketImpl impl)。
■ Socket(String host,int port,InetAddress localAddr,int localPort)。
■ Socket(InetAddress address,int port,InetAddress localAddr,int localPort)。
其中address、host和port分别是双向连接中另一方的IP地址、主机名和端口号,stream指明Socket是流Socket还是数据报Socket;localPort表示本地主机的端口号,localAddr和bindAddr是本地机器的地址(ServerSocket的主机地址);impl是socket的父类,既可以用来创建serverSocket,又可以用来创建Socket;count表示服务端所能支持的最大连接数。例如下面的代码。
读者在此需要注意,必须谨慎选择端口。每一个端口提供了一种特定的服务,只有给出正确的端口才能获得相应的服务。0~1023的端口号为系统所保留,例如HTTP服务的端口号为80,Telnet服务的端口号为21,FTP服务的端口号为23。我们在选择端口号时,建议最好选择一个大于1023的数,这样可以防止发生冲突。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。