zoukankan      html  css  js  c++  java
  • android发送udp,tcp消息

    发送方创建步骤:

    1.  创建一个DatagramSocket对象

    DatagramSocket socket = new  DatagramSocket (4567);

    2.  创建一个 InetAddress , 相当于是地址

    InetAddress serverAddress = InetAddress.getByName("想要发送到的那个IP地址"); 

    3.  这是随意发送一个数据

    String str = "hello";

    4.  转为byte类型

    byte data[] = str.getBytes();

     5.  创建一个DatagramPacket 对象,并指定要讲这个数据包发送到网络当中的哪个地址,以及端口号

    DatagramPacket  package = new DatagramPacket (data , data.length , serverAddress , 4567);

    6.  调用DatagramSocket对象的send方法 发送数据

     socket . send(package);

    udp的辅助工具类:

    这在自己项目中主要用来发送频道号码,如果是1...9自然发送一次即可,如果是多余1位的,就依次发送。

    package com.wotlab.home.moneyplantairs.utils;
    
    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    import java.net.SocketException;
    import java.net.UnknownHostException;
    /**
     * 为红外适配器发送指令的助手类
     * @author lx
     *
     */
    public class UDPHelper {
        private static DatagramSocket s = null;
        private static InetAddress local;
    
        public static void sendSingle(int message, String ip) {
            int server_port = Constants.SOCKET_PORT;
            if (s == null) {
                try {
                    s = new DatagramSocket();
                } catch (SocketException e) {
                    e.printStackTrace();
                }
                try {
                    // 换成服务器端IP,ip为想要发送到的那个ip地址
                    local = InetAddress.getByName(ip);
                } catch (UnknownHostException e) {
                    e.printStackTrace();
                }
            }
            String send = "###
    " + message + " 
    ###";
            DatagramPacket p = new DatagramPacket(send.getBytes(), send.length(),
                    local, server_port);
            try {
                s.send(p);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        public static void sendChannel(int channelID, String ip) {
            char[] strChannel = (channelID + "").toCharArray();
            for (int i = 0; i < strChannel.length; i++) {
    
                switch (Integer.parseInt(strChannel[i] + "")) {
                case 0:
                    sendSingle(0x11, ip);
                    break;
                case 1:
                    sendSingle(0x28, ip);
                    break;
                case 2:
                    sendSingle(0x18, ip);
                    break;
                case 3:
                    sendSingle(0x08, ip);
                    break;
                case 4:
                    sendSingle(0x22, ip);
                    break;
                case 5:
                    sendSingle(0x12, ip);
                    break;
                case 6:
                    sendSingle(0x02, ip);
                    break;
                case 7:
                    sendSingle(0x29, ip);
                    break;
                case 8:
                    sendSingle(0x19, ip);
                    break;
                case 9:
                    sendSingle(0x09, ip);
                    break;
                }
    
                if (i + 1 != strChannel.length) {
                    try {
                        Thread.sleep(1000);
                    } catch (Exception e) {
                    }
                }
            }
        }
    
    }
    udp辅助工具类

     发送tcp的操作

    package com.wotlab.home.moneyplantairs.utils;
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;
    import java.io.PrintWriter;
    import java.net.InetSocketAddress;
    import java.net.Socket;
    import java.net.SocketAddress;
    
    /**
     * Socket的助手类,用于通过TCP协议发送数据
     * 
     * @author lx
     * 
     */
    public class SocketHelper {
        private Socket s = null;
        BufferedReader input = null;
        PrintWriter output = null;
    
        public SocketHelper() {
        }
    
        public void connect(String ip, int port) throws Exception {
            s = new Socket();
            SocketAddress socAddress = new InetSocketAddress(ip, port);
            // SocketAddress socAddress = new InetSocketAddress("192.168.1.105",
            // port);
            s.connect(socAddress, Constants.SOCKET_TIMEOUT);
            s.setSoTimeout(Constants.SOCKET_LINK_TIMEOUT);
        }
    
        public void close() throws Exception {
            output.close();
            input.close();
            s.close();
        }
    
        public String sendTCP(String str) {
            String receive = "";
            try {
                if (s == null) {
                    throw new Exception("");
                }
                output = new PrintWriter(s.getOutputStream());
                output.print(str);
                output.flush();
                input = new BufferedReader(
                        new InputStreamReader(s.getInputStream()));
                receive = input.readLine();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return receive;
        }
    }
    发送tcp消息
  • 相关阅读:
    线段树专辑—— pku 1436 Horizontally Visible Segments
    线段树专辑——pku 3667 Hotel
    线段树专辑——hdu 1540 Tunnel Warfare
    线段树专辑—— hdu 1828 Picture
    线段树专辑—— hdu 1542 Atlantis
    线段树专辑 —— pku 2482 Stars in Your Window
    线段树专辑 —— pku 3225 Help with Intervals
    线段树专辑—— hdu 1255 覆盖的面积
    线段树专辑—— hdu 3016 Man Down
    Ajax跨域访问
  • 原文地址:https://www.cnblogs.com/bobodeboke/p/3422865.html
Copyright © 2011-2022 走看看