Java—网络编程

协议

  • UDP协议:将数据源和目的封装在数据包中,不需要建立连接。每个数据报的大小在64k,因为没有连接所有是不可靠的协议,但是速度快。
  • TCP协议:建立连接,形成传输数据的通道。在连接中进行数据的传输,通过三次握手完成连接,是可靠的连接,但是速度较慢。

使用UDP发送接收数据

package Test_13;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

/*
 * 使用UDP协议发送数据
 * 
 * DatagramSocket:此类表示用来发送和接收数据报包的套接字
 * 
 * DatagramPacket:此类表示数据报包
 */
public class SendDemo {
    public static void main(String[] args) throws IOException {
        //创建发送端Socket对象
        DatagramSocket ds = new DatagramSocket();
        //创建数据并打包
        String s = "hello world";
        byte[] bt = s.getBytes();
        int length = bt.length;
        InetAddress address = InetAddress.getByName("Lenovo-PC");
        int port = 8888;
        DatagramPacket dp = new DatagramPacket(bt,length,address,port);
        //发送数据
        ds.send(dp);
        //释放资源
        ds.close();
    }
}


----------

package Test_13;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

/*
 * 使用UDP协议接收数据
 * 
 * 
 */
public class ReceiveDemo {
    public static void main(String[] args) throws IOException {
        //创建接收端Socket对象
        DatagramSocket ds = new DatagramSocket(8888);

        //接收数据
        byte[] bt = new byte[1024];
        DatagramPacket dp = new DatagramPacket(bt, bt.length);
        ds.receive(dp);

        //解析数据
        InetAddress address = dp.getAddress();
        byte[] data = dp.getData();
        int length = dp.getLength();

        //输出数据
        System.out.println("sender-->"+address.getHostAddress());
        System.out.println(new String(data,0,length));

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

你可能感兴趣的:(Java,网络编程)