Socket通讯的基本实现
package com.yusian.socket;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class SocketDemo {
public static void main(String[] args) {
// 服务端进程
new Thread(() -> {
try {
// 创建一个Socket服务
ServerSocket ss = new ServerSocket(8080);
// 获取Socket的字节输入流对象,此时程序会阻塞在这个位置,直到有数据
InputStream is = ss.accept().getInputStream();
int data = 0;
// 将接收到的数据输出到控制台
while ((data = is.read()) != -1) {
System.out.print((char) data);
}
} catch (IOException e) {
e.printStackTrace();
}
}).start();
// 客户端进程
new Thread(() -> {
try {
// 创建一个Socket客户端,连接到指定服务器
Socket s = new Socket("localhost", 8080);
// 获取Socket的字节输出流,将数据从这里发出
OutputStream os = s.getOutputStream();
os.write("Hello Socket...".getBytes());
// 注意:要主动结束数据发送,否则对方会一直处于等待状态
s.shutdownOutput();
} catch (IOException e) {
e.printStackTrace();
}
}).start();
}
}
[……]