Hi I am currently making a project in Android using DatagramSockets and I'm not really that good in programming. I am making a registration page. My android device connects to the pc with information like username and receiptcode. My pc can receive the data. When my pc receives the data I need to check if the receiptcode is valid and unused. Then I would send to the client if it is invalid, unused, used or valid. The problem is my android device can't receive the data the pc sent. I really need your help guys. Currently I'm using an emulator. I need experts help. Here is my code:
Android Device:
public class RegisterAsyncTask extends AsyncTask<String, Integer, String>{
private DatagramSocket socket;
private DatagramPacket p;
private byte[] receiveData = new byte[1024];
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
try {
InetAddress local = InetAddress.getByName("10.0.2.2");
socket = new DatagramSocket();
p = new DatagramPacket(params[0].getBytes(), params[0].length(),local,12345);
socket.send(p);
Log.d ("asd", "Packet sent");
p = new DatagramPacket (receiveData, receiveData.length);
Log.d ("asd", "Receiving packet");
socket.receive(p);
Log.d ("asd", "Packet received");
String message = new String (p.getData(), 0 , p.getLength());
Log.d ("asd", message);
return message;
}
catch (Exception e) {
e.printStackTrace();
return null;
}
}
PC:
public class HandleAClient {
private DatagramSocket socket;
private DatagramPacket packet;
private int server_port = 12345;
private byte[] receiveData = new byte[1024];
private String receiptCode;
private InetAddress clientAddress;
private String errorMessage;
public HandleAClient (DatagramSocket socket, DatagramPacket packet) {
//Initializes instance variables
this.socket = socket;
this.packet = packet;
}
public void registerClient () {
try {
String message = new String (packet.getData(),0,packet.getLength());
Parser parser = new Parser();
receiptCode = parser.getReceiptCode(message);
System.out.println (receiptCode);
System.out.println ("Message: " + message + " on " + packet.getAddress() + " on port " + server_port);
String cadd = packet.getAddress().toString();
String newcadd = cadd.substring(1, cadd.length());
System.out.println (newcadd);
clientAddress = InetAddress.getByName(newcadd);
if (!ControlVariables.db.checkReceiptCode(receiptCode)) {
errorMessage = "Invalid Code";
System.out.println (errorMessage);
packet = new DatagramPacket(errorMessage.getBytes(), errorMessage.length(),clientAddress,12345);
socket.send(packet);
System.out.println ("error message send" + " to " +newcadd);
}
else {
ReceiptCode rc = new ReceiptCode();
rc = ControlVariables.db.getReceiptCode(receiptCode);
if (rc.getStatus().equals("used")) {
errorMessage = "Used Code";
packet = new DatagramPacket(errorMessage.getBytes(), errorMessage.length(),clientAddress,12345);
socket.send(packet);
}
else {
System.out.println (receiptCode);
System.out.println ("Message: " + message + " on " + packet.getAddress() + " on port " + server_port);
errorMessage = "Successful";
packet = new DatagramPacket(errorMessage.getBytes(), errorMessage.length(),clientAddress,12345);
socket.send(packet);
}
}
}
catch (Exception e) {
e.printStackTrace();
}
}