网络协议

网络协议分层是想让不同的从业人员可以专注于自己感兴趣的抽象层次。
而协议是通信的约定。

Java 网络编程 基于TCP

比Linux平台下的网络编程要简单、容易。没有bind listen那些东西了,也不用自己填结构体了。
直接分出了两种socket,一种是客户端socket,一种是服务器端socket。
读写内容只需要获取各自的输入输出流即可。简化了很多。

Java 网络编程 基于UDP

接收方和发送方都需要创建DatagramSocket和DatagramPacket。可以想象packet是个包,数据都要被包在包里。

public class Receiver {
    public static void main(String[] args) throws IOException {
        DatagramSocket datagramSocket = new DatagramSocket(8888);
        byte[] bytes = new byte[1024];
        DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length);
        datagramSocket.receive(datagramPacket);
        System.out.println(new String(bytes, 0, datagramPacket.getLength()));
        datagramSocket.close();
    }
}

public class Sender {
    public static void main(String[] args) throws IOException {
        DatagramSocket datagramSocket = new DatagramSocket();
        byte[] bytes = "Network Program".getBytes();
        DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length, InetAddress.getLocalHost(), 8888);
        datagramSocket.send(datagramPacket);
        datagramSocket.close();
    }
}