这里用一个进程的两个线程之间实现Socket通信。
运行的结果是不停打印出Server
但是如果服务端在Mac,而客户端在Android,是没有办法通信的,暂时还不知道为什么。
public static void main(String[] args) throws IOException {
// 启动了一个线程作为客户端
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
try {
Socket socket = new Socket("10.0.1.35", 2046);
// 用InputStream初始化InputStreamReader 再初始化BufferedReader
InputStream inputStream = socket.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
System.out.println(bufferedReader.readLine());
} catch (IOException e) {
e.printStackTrace();
}
}
}
}).start();
// 主线程作为服务器端 不停接收socket 并返回Server字符串
ServerSocket serverSocket = new ServerSocket(2046);
while (true) {
Socket socket = serverSocket.accept();
OutputStream os = socket.getOutputStream();
os.write("Server".getBytes("utf-8"));
os.close();
socket.close();
}
}serverSocket.accept()方法把线程阻塞在这里,只有接收到了数据,才会继续下面的代码。