udp协议和tcp协议是什么?要如何实现?

TheDisguiser 2020-05-23 11:20:35 java常见问答 3713

计算机通讯离不开各种通讯协议,你们知道udp协议和tcp协议吗?它们是计算机通讯中最常用的两种通讯协议,那又该如何在编程中实现它们呢?快跟小编一起来看看吧。

一、UDP协议与TCP协议基础概念

1.UDP是什么?

UDP: UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。

UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。

2.TCP是什么?

TCP: TCP协议全称是传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议,由 IETF 的RFC 793定义。

TCP是面向连接的、可靠的流协议。

流就是指不间断的数据结构,你可以把它想象成排水管中的水流。 三次握手。效率低

二、UDP协议发送数据

1.服务端

package udp;
import java.io.IOException;
import java.net.*;
/**
 * @Author 
 * @Company www.tulingedu.com
 * udp协议-服务端
 */
public class Server {
    public static void main(String[] args) throws IOException {
        //创建Socket对象
        DatagramSocket ds = new DatagramSocket();
        //创建数据
        String str = "Hello udp,I'm comming";
        InetAddress localHost = InetAddress.getByName("fred");
        DatagramPacket dp = new DatagramPacket(str.getBytes(), str.length(), localHost,8888);
        //发送数据
        ds.send(dp);
        //释放资源
        ds.close();
    }
}

2.客户端

package udp;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
/**
 * @Author 
 * @Company www.tulingedu.com
 * udp协议-客户端
 */
public class Client
{
    public static void main(String[] args) throws IOException
    {
        //创建接收端Socket对象
        DatagramSocket ds = new DatagramSocket(8888);
        //接收数据
        byte[] buf = new byte[1024];
        DatagramPacket dp = new DatagramPacket(buf, buf.length);
        System.out.println(1);
        ds.receive(dp); //阻塞
        System.out.println(2);
        //解析数据
        InetAddress address = dp.getAddress();
        byte[] data = dp.getData();
        int len = dp.getLength();
        //输出数据
        System.out.println("send to..." + address);
        System.out.println(new String(data, 0, len));
        //释放资源
        ds.close();
    }
}

三、TCP协议发送数据

1.服务端

package tcp;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
/**
 * @Author 
 * @Company www.tulingedu.com
 * tcp协议-服务端
 *
 */
public class Server
{
    public static void main(String[] args) throws IOException
    {
        //创建服务端Socket对象
        ServerSocket server = new ServerSocket(8888);
        //监听
        Socket s = server.accept();
        //获取输入流对象
        InputStream is = s.getInputStream();
        //输出数据
        byte[] bytes = new byte[1024];
        int len = is.read(bytes);
        System.out.println(new String(bytes, 0, len));
        //释放资源
        s.close();
        //server.close();
    }
}

2.客户端

package tcp;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
/**
 * @Author 
 * @Company www.tulingedu.com
 * tcp协议-客户端
 *
 * Exception in thread "main" java.net.ConnectException: Connection refused: connect
 */
public class Client
{
    public static void main(String[] args) throws IOException
    {
        //创建发送端Socket对象
        Socket s = new Socket(InetAddress.getByName("fred"), 8888);
        //获取输出流对象
        OutputStream os = s.getOutputStream();
        //发送数据
        String msg = "Hello tcp,i m client";
        os.write(msg.getBytes());
        //释放资源
        //        os.close();
        s.close();
    }
}

以上就是关于TCP与UDP协议的一些基础概念了,如果还想要了解更多相关java常见问答知识,请关注并了解我们的网站吧。

推荐阅读:

tcp和udp的区别在哪里?计算机通讯协议详解

tcp udp数据包长度限制有什么作用?TCP和UDP区别是什么?

TCP三次握手、四次挥手的原理是什么?过程简述