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 = "###\r\n" + message + " \r\n###";
        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消息

 

posted @ 2013-11-14 10:48  bobo的学习笔记  阅读(951)  评论(0编辑  收藏  举报