UDP网络编程

与 TCP 协议相比, UDP 是一个无连接,不可靠的协议。 即:数据的发送方只负责将数据发送出去,数据的接受方只负责接受数据。发送方和接收方不会相互确认数据的传输是否成功。
使用 UDP 通信有点类似于写信,当我们寄信的时候,不需要想打电话一样事先准备一个连接,寄信人只知道把信寄了出去,但是对方有没有收到信,寄信人则一无所知。
相对于 TCP 而言, UDP 有一个优点:效率较高。因此,当我们在对数据传输的正确率不太关心,但是对传输效率要求较高的情况下,可以采用 UDP 协议。典型的使用 UDP 协议的是网络语音以及视频聊天用。

我们现在要从客户端向服务器端发送一个“hello server”,而服务器端回给客户端一个字符串:“hello client”。
服务器端:

package chp17;
import java.io.*;
import java.net.*;
public class UDPServer {

	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		//创建 socket
		DatagramSocket socket = new DatagramSocket(9000);
		//收数据
		byte[] buf = new byte[100];
		DatagramPacket paper = new DatagramPacket(
		buf, 0, buf.length);
		socket.receive(paper);
		String str = new String(buf, 0 , paper.getLength());
		System.out.println(str);
		//发送数据
		byte[] data = "hello client".getBytes();
		DatagramPacket packet = new DatagramPacket(
		data, 0 ,data.length,
		paper.getSocketAddress()
		);
		socket.send(packet);
		//关闭 socket
		socket.close();
	
	}

}

客户端:

package chp17;
import java.io.*;
import java.net.*;
public class UDPClient {
	public static void main(String[] args) throws Exception  {
		// TODO Auto-generated method stub
		DatagramSocket socket = new DatagramSocket();
		String str = "hello server";
		byte[] data = str.getBytes();
		DatagramPacket packet = new DatagramPacket(
		data, 0, data.length,
		new InetSocketAddress("10.249.151.86", 9000)
		);
		socket.send(packet);
		byte[] buf = new byte[100];
		DatagramPacket paper = new DatagramPacket(
		buf, 0, buf.length
		);
		socket.receive(paper);
		String msg = new String(buf, 0, paper.getLength());
		System.out.println(msg);
		socket.close();
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值