java数据传输

本文介绍了Java中的网络编程,包括网络编程的概念、网络编程三要素:IP地址、端口号和传输协议。详细讲解了TCP和UDP两种协议的特点,TCP提供可靠连接,适合大数据量传输;而UDP则是无连接、不可靠协议,但传输速度较快。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java数据传输

网络编程
  • 网络编程概念
    计算机网络
    是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,
    在网络操作系统,网络管理软件及网络通信协议的管理和协调下,
    实现资源共享和信息传递的计算机系统。
    网络编程
    就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换

  • 网络编程三要素

    1.IP地址:InetAddress: 网络中设备的标识,不易记忆,可用主机名
    2.端口号: 用于标识进程的逻辑地址,不同进程的标识
    3.传输协议: 通讯的规则常见协议:TCP,UDP

  • 两种协议传输

    UDP
    将数据源和目的封装成数据包中,不需要建立连接;
    每个数据报的大小在限制在64k;
    因无连接,是不可靠协议;
    不需要建立连接,速度快
    TCP
    建立连接,形成传输数据的通道;
    在连接中进行大数据量传输;
    需要连接所以是可靠协议;
    必须建立连接,效率会稍低

UDP协议传输
  • 接收端
public class UDPServer {
    public static void main(String[] args) throws IOException {
        
        //创建数据报套接字并将其绑定到本地主机上的指定端口。
    
             //创建服务端的Socket 并向外暴露端口
        DatagramSocket ds = new DatagramSocket(6666);

        //创建一个数据报包
        //DatagramPacket( byte[] buf, int length)
        //构造 DatagramPacket,用来接收长度为 length 的数据包。
        byte[] bytes = new byte[1024];
        DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length);
        System.out.println("服务端已经开启....");
        //接收数据
        ds.receive(datagramPacket);//阻塞式方法
        //从数据报包里面取出数据
        byte[] data = datagramPacket.getData();
        int length = datagramPacket.getLength();//取出数据的实际长度
        String s = new String(data, 0, length);
        System.out.println(s);

        //释放资源
        ds.close();


    }
}
  • 发送端
public class UDPClient {
    public static void main(String[] args) throws IOException {
        
        //1.创建客户端的Socket
        DatagramSocket ds = new DatagramSocket();

        //2.发送:知道对方ip 端口
        //DatagramPacket 数据报包,
        //DatagramPacket( byte[] buf, int length, InetAddress address,int port)
        //构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。
        byte[] bytes = "UPD你好!我来了".getBytes();
        InetAddress byName = InetAddress.getByName("192.168.11.123");
        DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length, byName, 6666);
        ds.send(datagramPacket);

        //3.释放资源
        ds.close();
    }
}
TCP传输
  • 接收端

    public class TCPServer {
        public static void main(String[] args) throws IOException {
            //ServerSocket( int port)
            //创建绑定到特定端口的服务器套接字。
            ServerSocket ss = new ServerSocket(8888);//暴露端口号
            //侦听 客户端的连接
            System.out.println("服务器已经开启,等待连接...");
            //一旦有客户端连接上来,就返回该套接字
            //侦听并接受到此套接字的连接。此方法在连接传入之前一直阻塞。
            Socket sk = ss.accept();//阻塞式方法,会阻塞在这里,等待客户端的连接
    
            InputStream in = sk.getInputStream();
            byte[] bytes = new byte[1024];
            int len = in.read(bytes);
            String s = new String(bytes, 0, len);
            System.out.println(s);
    
            //释放资源
            ss.close();
        }
    }
    
  • 发送端

public class TCPClient {
    public static void main(String[] args) throws IOException {
       
        //参1,服务的的IP 参数2:服务端 端口
        Socket socket = new Socket("192.168.11.123", 8888);
        //发送数据
        //获取通道中的流
        OutputStream out = socket.getOutputStream();
        out.write("你好TCP服务端,我来了".getBytes());
        //释放资源
        socket.close();

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值