Java Socket 编程简介
先来看个最简 DEMO(双向通信):

// server端
public class SocketServer {
public static void main(String[] args) throws Exception {
ServerSocket server = new ServerSocket(8080);
// 阻塞等待连接
Socket socket = server.accept();
// 从socket中获取输入流,并建立缓冲区进行读取
InputStream inputStream = socket.getInputStream();
byte[] bytes = new byte[1024];
int len;
StringBuilder sb = new StringBuilder();
while ((len = inputStream.read(bytes)) != -1) {
sb.append(new String(bytes, 0, len,"UTF-8"));
}
System.out.println("Received: " + sb);
OutputStream outputStream = socket.getOutputStream();
outputStream.write("hello client".getBytes("UTF-8"));
outputStream.flush();
// 关闭流&连接
inputStream.close();
outputStream.close();
socket.close();
server.close();
}
}
// client 端
public class SocketClient {
public static void main(String args[]) throws Exception {
Socket socket = new Socket("127.0.0.1", 8080);
// 建立连接后获得输出流
OutputStream outputStream = socket.getOutputStream();
String message="hello server";
outputStream.write(message.getBytes("UTF-8"));
//通知server消息发送完成
socket.shutdownOutput();
// 读取消息
InputStream inputStream = socket.getInputStream();
byte[] bytes = new byte[1024];
int len;
StringBuilder sb = new StringBuilder();
while ((len = inputStream.read(bytes)) != -1) {
sb.append(new String(bytes, 0, len,"UTF-8"));
}
System.out.println("Received: " + sb);
// 关闭流&连接
inputStream.close();
outputStream.close();
socket.close();
}
}




