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

来源:互联网 发布:大数据培训骗局 编辑:程序博客网 时间:2024/06/01 20:15

服务端:

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();}}



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

0 0