TCP、UDP、网络通信

网络通信协议:在同一个网络中进行连接和通信的计算机需要遵守的一些规则,就比如行驶在道路上的汽车要遵守交通规则一样,计算机的规则就叫网络通信协议,它对数据的传输速率、格式做了同一的规定,通信双方必须遵守规定才能完成数据交换。

UDP:用户数据报协议(User Datagram Protoclol)。无连接通信协议,即在数据传输时,发送端和接收端不会建立逻辑逻辑。简单说,就是发送端只管发送数据,不管接收端会不会收到。优点是资源消耗少,通信效率高。缺点传输数据不能太大,而且不能保证数据完整性。所以常用于音频、视频和普通数据如视频会议等。

TCP:传输控制协议(Transmission Control Protocol)。是面向连接的通信,即传输数据前需要建立逻辑连接,它提供了计算机之前可靠无差错的数据传输。连接中需要明确客户端与服务端,有客户端向服务端发起连接请求,每次连接都需要经过“三次握手”。

  • 第一次握手:客户端向服务端发出连接请求,等待服务端确认。
  • 第二次握手:服务端确认请求,然后向客户端回送一个响应。
  • 第三次握手:客户端再次向服务端发送确认信息,建立连接。

完成三次握手后,就建立连接,可以保证数据传输安全,所以应用于下载文件,浏览网页等。

网络编程三要素:

  • 协议:计算机网络必须遵守的规则。
  • IP地址:指互联网协议地址(Internet Protocol Address)。IP地址用于给网络中的计算机设备做唯一的编号,相当于我们的“电话号码”。IP地址又分为IPv4和IPv6。
  • 端口号:端口号用来标识计算机设备中的进程(应用程序)。两个字节表示的整数,取值范围0~65535。0~1023用于一些知名的网络和应用,普通程序使用1024以上。

TCP通信程序:TCP通信需要2严格区分客户端和服务端,服务端先启动等待客户端连接,客户端主动连接服务端,连接成功就可以通信了,服务端不能主动连接客户端。

简单的TCPTCP通信程序:

1、服务端启动,创建ServerSocket对象,等待连接。

2、客户端启动,创建Socket对象,请求连接。

3、服务端调用accept方法,返回一个Socket对象。

4、客户端Socket对象获取OutputStream,向服务端写出数据。

5、服务端Socket对象获取InputStream,获取客户端发送的数据。

服务端:

public class Server {
    public static void main(String[] args) throws Exception{
        System.out.println("服务端启动......");
        //指定端口 创建ServerSocket
        ServerSocket server = new ServerSocket(8888);
        //阻塞等待连接
        Socket accept = server.accept();
        //获取输入流 接收数据
        DataInputStream dis = new DataInputStream(accept.getInputStream());
        System.out.println(accept.getLocalAddress() + "对你说:" + dis.readUTF());
        
        //关闭资源
        dis.close();
        accept.close();

    }
}

客户端:

public class Client {
    public static void main(String[] args) throws Exception {
        System.out.println("客户端启动......");
        //指定服务端地址与端口 创建Socket
        Socket client = new Socket("127.0.0.1",8888);
        //获取输出流 发送数据
        DataOutputStream dos = new DataOutputStream(client.getOutputStream());
        dos.writeUTF("你好,我是客户端!");
        dos.flush();

        //关闭资源
        dos.close();
        client.close();

    }
}
发布了5 篇原创文章 · 获赞 1 · 访问量 160

猜你喜欢

转载自blog.csdn.net/qq_41973930/article/details/104148316