Suspend udp server until message arrives
I have a server and a client and i want the server to be under suspend/sleep/wait mode, whatever, until the client sends a string message. I have read about syncronize but i can't make it work properly. Any ideas?
server.java
import java.io.File;
import java.io.FileInputStream;
import java.io.FilenameFilter;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
publicclass Serverextends Thread{
publicstaticvoid main(String[] args)throws IOException{
Server server =new Server();
server.start();// -> run()
}
publicvoid serverThread(){
try{
// Create Image Data File
FileInputStream fisImage;
String serverIP ="10.103.0.33";
InetAddress serverAddress = InetAddress.getByName(serverIP);
String clientIP ="10.103.0.33";
InetAddress clientAddress = InetAddress.getByName(clientIP);
int serverPort = 4445;
int clientPort = 4446;
DatagramSocket txSocket =new DatagramSocket();
DatagramSocket rxSocket =new DatagramSocket(serverPort);
DatagramPacket txPacket;
DatagramPacket rxPacket;
byte[] rxBuffer =newbyte[256];
byte[] txBuffer;
String message ="";
do{
rxPacket =new DatagramPacket(rxBuffer,rxBuffer.length);
message =new String(rxBuffer,0,rxPacket.getLength());
//System.out.println("hey");
}
while (!message.equals(""));
System.out.println(message);
rxSocket.close();
txSocket.close();
}catch (Exception e){
e.printStackTrace(System.err);
}
}
publicvoid run(){
serverThread();
}
}
client.java
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
publicclass Client{
publicstaticvoid main(String[] args)throws IOException{
// Define Server
String serverIP ="10.103.0.33";
InetAddress serverAddress = InetAddress.getByName(serverIP);
int serverPort = 4445;
// Define Client
String clientIP ="10.103.0.33";
InetAddress clientAddress = InetAddress.getByName(clientIP);
int clientPort = 4446;
DatagramSocket txSocket =new DatagramSocket();
DatagramSocket rxSocket =new DatagramSocket(clientPort);
DatagramPacket txPacket;
DatagramPacket rxPacket;
byte[] txBuffer =newbyte[256];
byte[] rxBuffer =newbyte[60000];
String message ="";
// Send start server request
message ="Start";
txBuffer = message.getBytes();
txPacket =new DatagramPacket(txBuffer,txBuffer.length,serverAddress,serverPort);
txSocket.send(txPacket);
socket.close();
}
}

