服务器
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket; public class Server {
public static void main(String[] args) throws IOException { ServerSocket ss = new ServerSocket(10000);
System.out.println("伺服中.......");
while (true) {
// The method blocks until a connection is made.
// 阻塞直至建立某个连接
Socket s = ss.accept(); // 接收数据
InputStream in = s.getInputStream();
byte[] b = new byte[1024 * 1024];
int len = in.read(b);
String requestData = new String(b, 0, len);
System.out.println("客户端请求数据:" + requestData); // 处理数据
String responseData = requestData.toUpperCase(); // 响应结果
OutputStream out = s.getOutputStream();
out.write(responseData.getBytes()); in.close();
out.close();
s.close(); // 关闭服务
if (requestData.equalsIgnoreCase("exit")) {
break;
}
}
ss.close();
}
}
客户端
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException; public class Client { public static void main(String[] args) throws UnknownHostException,
IOException {
Socket s = new Socket("172.16.162.238", 10000); // 发起请求
OutputStream out = s.getOutputStream();
out.write(args[0].getBytes()); // 接收处理结果
InputStream in = s.getInputStream();
byte[] b = new byte[1024 * 1024];
int len = in.read(b);
String result = new String(b, 0, len);
System.out.println("处理结果是:" + result); in.close();
out.close();
s.close(); } }
测试:
客户端请求参数
Program arguments:abc
客户端显示结果:
处理结果是:ABC
服务器显示结果:
伺服中.......
客户端请求数据:abc
注意:
accept方法会加锁,直到建立连接。
多个客户端连接服务器时,需排队依次处理。