浅谈java中udp服务器客户端实例

服务端:

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/**
 * 服务端
 * @author huawangxin
 *
 * 2016年11月23日 上午1:24:53
 */
public class Server {
	private DatagramSocket socket;
	/*
	 * 服务端的启动
	 */
	public void start(){
		try {
			socket = new DatagramSocket(8088);
			byte[] data=new byte[100];
			DatagramPacket recvPacket=new DatagramPacket(data, data.length);
			//接收数据到包中
			//注意该方法是个阻塞方法
			socket.receive(recvPacket);
			//拆包拿数据
			byte[] d=recvPacket.getData();
			//有效数据长度
			int dlen=recvPacket.getLength();
			/*
			 * String(byte[] b,int offset,int len,
			 * String caarserName)
			 * 将给定的字节数组中,从offset处
			 * 开始连续len个字节,再根据给定的字符串转换为字符串
			 */
			String info=new String(d,0,dlen,"UTF-8");
			System.out.println("客户端说:"+info);
			
			int port=recvPacket.getPort();
			InetAddress addr=recvPacket.getAddress();
			String sendStr="hello,欢迎来到英雄联盟";
			byte[] sendBuf=sendStr.getBytes();
			DatagramPacket sendPacket=new DatagramPacket(sendBuf, sendBuf.length,addr,port);
			socket.send(sendPacket);
			socket.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	public static void main(String [] args){
		Server server=new Server();
		server.start();
	}
}

客户端:

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/**
 * 客户端
 * @author huawangxin
 *
 * 2016年11月23日 上午1:24:40
 */
public class Client {
	private DatagramSocket socket;
	/*
	 * 客户端的启动
	 */
	public void start(){
		try{
			socket = new DatagramSocket();
			String str="你好!服务端!";
			byte[] data=str.getBytes("UTF-8");
			//打包:准备包裹,填写地址,装入数据
			InetAddress address=InetAddress.getByName("127.0.0.1");
			int port=8088;
			//创建发送包
			DatagramPacket sendPacket=new 
			DatagramPacket(data,data.length,address,port);
			//将其发送出去
			socket.send(sendPacket);
			byte[] recvBuf=new byte[100];
			DatagramPacket recvPacket=new DatagramPacket(recvBuf, recvBuf.length);
			socket.receive(recvPacket);
			String str2=new String(recvPacket.getData(),0,recvPacket.getLength());
			System.out.println("服务端说:"+str2);
			socket.close();
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	public static void main(String[] args){
		Client client=new Client();
		client.start();
	}
}



上述如果有不对或者补充的地方,请大家批评和指教,谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值