Socket网络通信之BIO

如果要让两台计算机实现通信,需要的条件:ip,port,协议。

目前我们用的最多的就是TCP/IP协议和UDP协议。TCP三次握手,所以比较慢,且安全;UDP速度快,但是可能丢包,不能保证安全。

网络通讯基本都是通过Socket来通讯的。(客户端的Socket类;服务端的ServerSocket类)

客户端和服务端这样建立连接:第一步客户端发起建立连接的请求,第二部服务端收到请求建立连接的请求,并同意和该客户端建立连接,并响应给客户端,第三步客户端收到服务端响应的建立连接的消息,并确认和服务端建立连接,通过这样三部客户端和服务端就真正的建立了连接,服务端和客户端就可以开始通讯,交互了.通过这样三次的握手交互服务端和客户端就成功的建立了连接,如下图所示

Socket网络通信之BIO

而JAVA中实现通信的IO主要是:同步阻塞IO(BIO)、同步非阻塞IO(NIO)、异步非阻塞IO(AIO)

同步阻塞IO(BIO)— 原生态

public class BioServer {

    private  static Charset charset = Charset.forName("UTF-8");
    public static void main(String[] args) {
        int port = 1100;

        try ( ServerSocket  socketServer = new ServerSocket(port)){
            while (true){
                //接收连接,如果没有连接建立,这里会阻塞
                Socket socket = socketServer.accept();
                BufferedReader reader = new BufferedReader(
                        new InputStreamReader(socket.getInputStream(), charset)
                );
                String msg = null;
                //连接进来后,会在这里等待客户端发送消息。
                while ((msg =reader.readLine())!=null){
                    System.out.println(msg);
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
BioServer

相关文章: