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

  • 相关阅读:
    erlang开发环境(IDE)搭建
    Mono for android,Xamarin点击事件的多种写法
    .NET C#中处理Url中文编码问题
    第一天正式学习,定一个学习目标吧。
    想转行做开发了!
    Java JMS 程序基础 与 ActiveMQ 安装(一)
    JDBC 基础
    Linux 6.4 设置yum 为centOS源
    C++ 简单实现 依赖注入(IOC)
    安卓项目
  • 原文地址:https://www.cnblogs.com/GH0522/p/8119289.html
Copyright © 2011-2022 走看看