Socket网络通信之BIO
如果要让两台计算机实现通信,需要的条件:ip,port,协议。
目前我们用的最多的就是TCP/IP协议和UDP协议。TCP三次握手,所以比较慢,且安全;UDP速度快,但是可能丢包,不能保证安全。
网络通讯基本都是通过Socket来通讯的。(客户端的Socket类;服务端的ServerSocket类)
客户端和服务端这样建立连接:第一步客户端发起建立连接的请求,第二部服务端收到请求建立连接的请求,并同意和该客户端建立连接,并响应给客户端,第三步客户端收到服务端响应的建立连接的消息,并确认和服务端建立连接,通过这样三部客户端和服务端就真正的建立了连接,服务端和客户端就可以开始通讯,交互了.通过这样三次的握手交互服务端和客户端就成功的建立了连接,如下图所示
而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(); } } }