zoukankan      html  css  js  c++  java
  • JavaSocket UDP Byte类型的收发

    package com.zchome;

    import java.net.*;
    import java.io.*;

    public class testudp {
        
    public static void main(String[] args) {
            DatagramSocket s 
    = null;
            
    try {
                s 
    = new DatagramSocket();
                
    byte[] control_buffer = new byte[4];
                
    byte[] content_buffer = null;
                
    byte[] result_buffer = null;
                
    byte[] receive_buffer = new byte[100];
                
    for (int nloopindex = 0; nloopindex < 10; nloopindex++) {
                    
    //define first 4 Bytes
                    control_buffer[0= 0x00;
                    control_buffer[
    1= 0x01;
                    control_buffer[
    2= 0x01;
                    control_buffer[
    3= 0x00;
                    
                    String IPAddress 
    = "192.168.0.2";
                    content_buffer 
    = IPAddress.getBytes();
                    
                    result_buffer 
    = Toolkit.getInstance().addByteBuffers(control_buffer, content_buffer);
                    
                    InetAddress ia 
    = InetAddress.getByName("192.168.0.9");
                    
                    DatagramPacket dgp 
    = new DatagramPacket(result_buffer, result_buffer.length, ia, 10002);
                    s.send(dgp);
                    
                    dgp 
    = new DatagramPacket(receive_buffer, receive_buffer.length, ia, 10002);
                    s.receive(dgp);
                    System.out.println(
    new String(dgp.getData()));
                }
            }
            
    catch (IOException e) {
                System.out.println(e.toString());
            }
            
    finally {
                
    if (s != null)
                    s.close();
            }
        }
    }

    这里还有一个将两个byte数组相加的方法:  

    /*
    * Toolkit.java
    *
    * Created on 2004年8月18日, 上午10:53
    */

    package com.zchome;

    /**
    *
    @author  张超
    */
    public class Toolkit {
        
        
    /** Creates a new instance of Toolkit */
        
    private Toolkit() {
        }
        
        
    private static Toolkit _instance = null;
        
        
    public static Toolkit getInstance() {
            
    if (_instance == null)
                _instance 
    = new Toolkit();
            
    return _instance;
        }
        
        
    public byte[] addByteBuffers(byte[] first, byte[] second)
        {
            
    int nloopindex = 0;
            
    int first_length = first.length;
            
    int second_length = second.length;
            
    byte[] return_bytes = new byte[first_length + second_length];
            
            
    for (nloopindex = 0; nloopindex < first_length; nloopindex++)
            {
                return_bytes[nloopindex] 
    = first[nloopindex];
            }
            
    for (nloopindex = 0; nloopindex < second_length; nloopindex++)
            {
                return_bytes[first_length 
    + nloopindex] = second[nloopindex];
            }
            
            
    return return_bytes;
        }
        
    }

     一点注意:在s.receive一句之前加上这句: 


    socket.setSoTimeout(5000); //设置5秒的timeout 

    这样可以防止,在没有东西receive的时候,程序被block
  • 相关阅读:
    jQuery拾忆
    关于在审查元素中看到的::before与::after
    Spring MVC数据绑定
    最近要了解的
    MySql去重
    数据库去重与join连表
    Spring jdbcTemplate RowMapper绑定任意对象
    二十九、利用 IntelliJ IDEA 进行代码对比的方法
    二十八、详述 IntelliJ IDEA 远程调试 Tomcat 的方法
    二十七、详述 IntelliJ IDEA 设置 Sublime 代码颜色的方法
  • 原文地址:https://www.cnblogs.com/super119/p/1924563.html
Copyright © 2011-2022 走看看