2.TCP协议的通信实例
马克-to-win:一旦客户端申请建立一个连接,ServerSocket就会返回(通过accept()方法)一个对应的服务器端的Socket,以便进行直接通信。从此时起,我们就得到了一对真正的“Socket-Socket”连接,此时可以利用getInputStream()以及getOutputStream()从每个Socket产生对应的 InputStream和OutputStream对象。之后,可按上章介绍的方法对类进行处理,就象原来对待其他任何流对象那样。创建一个 ServerSocket时,只需为其赋予一个端口编号。但在创建一个客户端 Socket时,必须同时赋予IP以及要连接的端口。下面这对程序先运行服务器程序,再运行客户端程序。
例:2.2.1(客户端写,服务器端读)
import java.io.*;
import java.net.*;
public class TestMark_to_win {
public static final int PORT = 4002;
public static void main(String[] args) throws IOException {
ServerSocket s = new ServerSocket(PORT);
// Blocks until a connection occurs:
System.out.println("我作为服务器,正等着你");
Socket socket = s.accept();
System.out.println("这句开始打印不出来");
InputStream in = socket.getInputStream();
int i = in.read();
System.out.println("Echoing: " + i);
socket.close();
s.close();
}
}
以下是客户端程序:
import java.net.*;
import java.io.*;
public class Test {