基于UDP协议的socket编程示例

客户端

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

public class LoginClient {
    public static void main(String[] args) {
        String info = "你好,我想咨询一个问题";
        byte[] infos = info.getBytes();
        //IP地址获取方法
        InetAddress ia;
        DatagramSocket socket =null;
        try {
            ia = InetAddress.getByName("localhost");
            DatagramPacket dp = new DatagramPacket(infos, infos.length, ia, 5000);
            socket = new DatagramSocket();
            socket.send(dp);
             
            //接收服务端信息
            byte[] replys = new byte[1024];
            DatagramPacket dp1 = new DatagramPacket(replys,replys.length);
            socket.receive(dp1);
            String reply = new String(dp1.getData(),0,dp1.getData().length);
            System.out.println("服务器说:"+reply);
             
             
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (SocketException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            socket.close();
        }
         
         
         
    }
}

服务器端

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketAddress;
import java.net.SocketException;


public class LoginService {
    public static void main(String[] args) {
        DatagramSocket socket = null;
        byte[] info = new byte[1024];
        DatagramPacket dp = new DatagramPacket(info, info.length);
        try {
            socket = new DatagramSocket(5000);
            socket.receive(dp);
            
            String infos = new String(dp.getData(), 0, dp.getData().length);
            System.out.println("客户端说:"+infos);
            
            //给客户端一个响应
            String reply = "你好,有什么问题请说";
            SocketAddress sa = dp.getSocketAddress();
            DatagramPacket dp1 = new DatagramPacket(reply.getBytes(), 0, reply.getBytes().length, sa);
            socket.send(dp1);
            
            
        } catch (SocketException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            socket.close();
        }
        
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,297评论 6 13
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,256评论 19 139
  • 本节前言 本来想讲一下基础的网络通信方面的知识点,发现太枯燥乏味了,不过笔试中也经常会问到这方面的问题,所以关于通...
    侯蛋蛋_阅读 1,928评论 0 15
  • 参考:http://www.2cto.com/net/201611/569006.html TCP HTTP UD...
    F麦子阅读 2,992评论 0 14
  • 姓名:巢环环 公司:宁波大发化纤有限公司 期数:第264期六项精进 组名:努力一组 【日精进打卡第85】共85天 ...
    巢环环阅读 113评论 0 0