回顾Java多线程在Socket通信中的使用
一、Java中socket编程
- socket = IP + 端口号,构成了在网络上唯一能被识别的标识符套接字。
- 通信的client和server双方都要获取对方的socket才能进行通信,socket之间的通信就是网络通信。
- socket之间就是普通的IO流传输。
- 这篇主要回顾TCP通信,也就是基于字节流的网络传输。
二、一般的单线程socket通信
-
建立连接的几个步骤:
- server 端声明 ServerSocket ,然后调用accept() 方法阻塞获得client的socket。
- 通过获得的socket调用 getInputStream()或者getOutputStream()获得输入输出流,进行数据传输。
- client 声明 Socket ,获得输入输出流,进行数据传输。
- 双方关闭socket
-
建立示例:
//服务器端 public class Server { public static void main(String[] args) { ServerSocket serverSocket; { try { serverSocket = new ServerSocket(8888); Socket socket = serverSocket.accept(); InputStream inputStream = socket.getInputStream(); OutputStream outputStream = socket.getOutputStream(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); String str; str = bufferedReader.readLine(); System.out.println(str); BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream)); bufferedWriter.write("Message Received"); bufferedWriter.flush(); socket.shutdownOutput(); } catch (IOException e) { e.printStackTrace(); } } } }
public class Client { public static void main(String[] args) { Socket socket; { try { socket = new Socket("127.0.0.1",8888); InputStream inputStream = socket.getInputStream(); OutputStream outputStream = socket.getOutputStream(); BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream)); bufferedWriter.write("First message"); bufferedWriter