zoukankan      html  css  js  c++  java
  • JAVA Socket编程(一)之UDP通信

    常见的通讯协议有udp和tcp。

    --将数据及源、目的封装在数据包中,不需要建立连接;

    --每个数据包的大小限制在64k以内;

    --因无连接,是不可靠协议;

    --不需要建立连接,所以传输速度快,但是容易丢失数据;

    总之:Udp是面向无连接的通讯协议,传输数据时,不管对端服务是否启动,直接发送。

    日常中使用Udp技术的软件有:飞秋、视频会议等;

    分为客户端、服务器端

    服务器段代码如下:

     1 package udp;
     2 
     3 import java.net.DatagramPacket;
     4 import java.net.DatagramSocket;
     5 
     6 public class Server {
     7     public static void main(String[] args) {
     8         DatagramSocket ds=null;
     9         DatagramPacket dp=null;
    10         try {
    11             ds=new DatagramSocket(9000);//服务端口
    12             byte[] b=new byte[1024];//用于接收客户端的数据
    13             dp=new DatagramPacket(b, b.length);
    14             ds.receive(dp);//接收
    15             String me=new String (dp.getData(),0,dp.getLength());//得到字符串
    16             System.out.println(me);
    17             
    18             
    19             
    20     
    21             ds=new DatagramSocket();
    22             String me2="ok";
    23             dp=new DatagramPacket(me2.getBytes(), me2.length(), dp.getAddress(), dp.getPort());//直接根据数据报获取到获取数据的地址,端口
    24             ds.send(dp);//响应数据
    25         } catch (Exception e) {
    26             // TODO: handle exception
    27             e.printStackTrace();
    28         }
    29     }
    30 }


    客户端代码如下:

     1 package udp;
     2 
     3 import java.net.DatagramPacket;
     4 import java.net.DatagramSocket;
     5 import java.net.InetAddress;
     6 
     7 public class Client {
     8     public static void main(String[] args) {
     9         DatagramSocket ds=null;
    10         DatagramPacket dp=null;
    11         try {
    12             ds=new DatagramSocket();
    13             String message="hello";
    14             dp=new DatagramPacket(message.getBytes(), message.length(), InetAddress.getByName("localhost"), 9000);
    15             ds.send(dp);
    16             
    17         
    18             byte[] b=new byte[1024];
    19             dp=new DatagramPacket(b, b.length);
    20             ds.receive(dp);
    21             String me=new String (dp.getData(),0,dp.getLength());
    22             System.out.println(me);
    23             
    24         } catch (Exception e) {
    25             // TODO: handle exception
    26             e.printStackTrace();
    27         }
    28     }
    29 }

    tcp编程查看:http://www.cnblogs.com/GH0522/p/8119533.html

  • 相关阅读:
    winfrom让窗体在屏幕右下角慢慢向上弹出
    winfrom的StatusStrip控件如何设置控件右对齐
    Winfrom通过Panel拖动无边框窗体
    优秀学习资源汇总
    hexo+github搭建博客跳坑
    博客园主题样式修改
    wxss无法调用本地资源图片
    微信小程序wx:for循环
    Git常用命令总结
    git push解决办法: ! [remote rejected] master -> master (pre-receive hook declined)
  • 原文地址:https://www.cnblogs.com/GH0522/p/8119289.html
Copyright © 2011-2022 走看看