Overview
socket编程旨在通过网络让运行再不同的电脑上的程序能相互通讯。
socket编程中有两种通讯协议:
下面将介绍据于TPC/IP**的教程,使用Java编写客户端/服务器(C/S)应用程序。
学这个教程前, 你应该已经知道:基本的计算机网络
Java IO的基本操作
java 多线程的基本操作
单元测试
简单例子
让我们弄清楚这些客户端和服务器最基本的双通(two-way communication)例子。
服务器
public class GreetServer {
private ServerSocket serverSocket;
private Socket clientSocket;
private PrintWriter out;
private BufferedReader in;
public void start(int port) {
serverSocket = new ServerSocket(port);
clientSocket = serverSocket.accept();
out = new PrintWriter(clientSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String greeting = in.readLine();
if ("hello server".equals(greeting)) {
out.println("hello client");
}
else {
out.println("无法识别问候");
}
}
public void stop() {
in.close();
out.close();
clientSocket.close();
serverSocket.close();
}
public static void main(String[] args) {
GreetServer server=new GreetServer();
server.start(6666);
}
}
客户端
public class GreetClient {
private Socket clientSocket;
private PrintWriter out;
private BufferedReader in;
public void startConnection(String ip, int port) {
clientSocket = new Socket(ip, port);
out = new PrintWriter(clientSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));