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();
}
}