在Java中使用Socket(套接字)来完成TCP程序的开发,使用此类可以方便的建立可靠的、双向的、持续的、点对点的通信连接。服务器端使用ServerSocket等待客户端的连接,,而每一个客户端都是用一个Socket对象表示。
1.ServerSocket类与Socket类
ServerSocket类主要运用在服务器端开发,用于接收客户端的连接请求。常用方法: 类型 方法 描述
构造方法 ServerSocket(int port) 创建绑定到特定端口的服务器套接字。
Socket accept() 侦听并接受到此套接字的连接。
InetAddress getInetAddress() 返回此服务器套接字的本地地址。
boolean isClosed() 返回 ServerSocket 的关闭状态。
void close() 关闭此套接字。
服务器端每次运行都要使用accept()方法等待客户端连接,此方法执行之后服务器端进入阻塞状态,直到客户端连接之后程序才向下继续执行。此方法返回Socket类型,每一个Socket都表示一个客户端对象。Socket常用方法: 类型 方法 描述
构造方法 Socket(String host, int port) 创建一个流套接字并将其连接到指定主机上的指定端口号。
InputStream getInputStream() 返回此套接字的输入流。
OutputStream getOutputStream() 返回此套接字的输出流。
void close() 关闭此套接字。
boolean isClosed() 返回套接字的关闭状态。
在客户端,程序可以通过Socket类的getInputStream()方法取得服务器的输出信息;在服务器端,可以通过getOutputStream()方法取得客户端的输出信息。
2.服务器向客户端输出
服务器端程序:
packageorg.demo.net;importjava.io.IOException;importjava.io.PrintStream;importjava.net.ServerSocket;importjava.net.Socket;public classHelloServer {public static voidmain(String[] args) {
ServerSocket server=null;
Socket client=null;
PrintStream out=null;try{
server=new ServerSocket(8888);
System.out.println("服务器运行,等待客户端连接");
client=server.accept();
String str="Hello!";
out=newPrintStream(client.getOutputStream());
out.println(str);
out.close();
client.close();
server.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}
运行结果: