package de.tudarmstadt.informatik.hostage.sync.wifi_direct; import android.util.Log; import java.io.IOException; import java.io.InputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; /** * Created by Julien on 07.01.2015. */ public class WiFiP2pServerTask extends BackgroundTask { private ServerSocket serverSocket; @Override public void interrupt(boolean b){ super.interrupt(b); if (b && this.serverSocket != null) { try { this.serverSocket.close(); } catch (IOException e) { Log.e("WiFiP2pServerTask", e.getMessage()); } } } public WiFiP2pServerTask(BackgroundTaskCompletionListener l){ super(l); } @Override public boolean performInBackground(){ while (!this.isInterrupted()){ try { this.serverSocket = new ServerSocket(8988); Log.d("WiFiP2pServerTask", "Server: Socket opened"); Socket client = this.serverSocket.accept(); Log.d("WiFiP2pServerTask", "Server: connection done"); this.handleConnection(client, this.serverSocket); client.close(); serverSocket.close(); } catch (ClassNotFoundException e){ Log.e("WiFiP2pServerTask", e.getMessage()); return false; } catch (IOException e) { Log.e("WiFiP2pServerTask", e.getMessage()); return false; } } return true; } private void handleConnection(Socket client, ServerSocket server) throws IOException, ClassNotFoundException { InputStream is = client.getInputStream(); ObjectInputStream ois = new ObjectInputStream(is); OutputStream os = client.getOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(os); Object obj = ois.readObject(); while (obj != null && obj instanceof WiFiP2pSerializableObject) { WiFiP2pSerializableObject receivedObj = ( WiFiP2pSerializableObject) obj; obj = null; WiFiP2pSerializableObject toSend = this.handleReceivedObject(receivedObj); if (toSend != null) { oos.writeObject(toSend); oos.flush(); oos.reset(); } obj = ois.readObject(); } oos.close(); os.close(); ois.close(); is.close(); } public WiFiP2pSerializableObject handleReceivedObject(WiFiP2pSerializableObject receivedObj){ return null; } }