UDP send receive

package com.thunder.fingerpaint;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;

import android.content.Context;
import android.util.Base64;
import android.widget.Toast;

public class UDPsendMessage {
private Context context;
private int UDPSendProt=50001;
private String UDPSendIP="10.0.0.27";
private DatagramSocket udpSocket = null;
InetAddress local = null;
Boolean sendSuccessed = true;
UDPsendMessage(Context context){
    this.context=context;
}

public boolean SendMessage(String sendMsg){

    try {
        local = InetAddress.getByName(UDPSendIP);
        
    } catch (UnknownHostException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        Toast.makeText(context, "InetAddress fail", 500).show();
        return false;
    } 
    try {
        udpSocket=new DatagramSocket();
        
    } catch (SocketException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        Toast.makeText(context, "DatagramSocket fail", 500).show();
        return false;
    }
    
    DatagramPacket dPacket;
    int lenth=sendMsg==null?0:sendMsg.getBytes().length;
    dPacket=new DatagramPacket(sendMsg.getBytes(), lenth,local, UDPSendProt);
    try {
        udpSocket.send(dPacket);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        Toast.makeText(context, "send fail", 500).show();
        return false;
    }
    return true;
    
}
}
package com.thunder.fingerpaint;

import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

import org.apache.http.entity.ByteArrayEntity;

import android.R.bool;
import android.content.Context;
import android.util.Base64;
import android.widget.Toast;

public class ReceiveMessage implements Runnable {
    private int ReceivePort = 50000;
    private boolean threadlife = true;
    private DatagramSocket mSocketReceive;
    private Context context;
    private byte[] receiveBuffer = new byte[1024];
    private String receiveUDPMsg = null;
    private InterfaceMessage InterfaceMessage;

    ReceiveMessage(Context context) {
        this.context = context;
    }

    public void StopThread() {
        threadlife = false;
    }

    public void setcallback(InterfaceMessage e) {
        this.InterfaceMessage = e;
    }

    @Override
    public void run() {
        // TODO Auto-generated method stub
        try {
            mSocketReceive = new DatagramSocket(ReceivePort);
        } catch (SocketException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return;
        }
        DatagramPacket dp = new DatagramPacket(receiveBuffer,
                receiveBuffer.length);

        while (threadlife) {
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                mSocketReceive.receive(dp);

                // receiveUDPMsg=readbase64(dp.getData());
                // receiveUDPMsg=Base64.decode(dp.getData(),
                // Base64.DEFAULT).toString();
                // receiveUDPMsg = new String(dp.getData(), 0,
                // dp.getLength()).trim();
                receiveUDPMsg = new String(dp.getData(), 0, dp.getLength());
                if (receiveUDPMsg != null) {
                    InterfaceMessage.SendMessage(receiveUDPMsg);
                } else {
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                threadlife = false;
            }
        }
    }

    private String readbase64(byte[] buf) {
        InputStream is = new ByteArrayInputStream(Base64.decode(buf,
                Base64.DEFAULT));
        StringBuilder sb = new StringBuilder();
        BufferedReader bread = new BufferedReader(new InputStreamReader(is));
        String line = null;
        try {
            while ((line = bread.readLine()) != null) {
                sb.append(line);
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return sb.toString();
    }
}

 

posted on 2013-03-05 10:10  _star  阅读(385)  评论(0)    收藏  举报

导航