WiFiP2pServerTask.java 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package de.tudarmstadt.informatik.hostage.sync.wifi_direct;
  2. import android.os.Environment;
  3. import android.util.Log;
  4. import com.example.android.wifidirect.WiFiDirectActivity;
  5. import java.io.File;
  6. import java.io.FileOutputStream;
  7. import java.io.IOException;
  8. import java.io.InputStream;
  9. import java.io.ObjectInputStream;
  10. import java.io.ObjectOutputStream;
  11. import java.io.OutputStream;
  12. import java.net.ServerSocket;
  13. import java.net.Socket;
  14. /**
  15. * Created by Julien on 07.01.2015.
  16. */
  17. public class WiFiP2pServerTask extends BackgroundTask {
  18. private ServerSocket serverSocket;
  19. @Override
  20. public void interrupt(boolean b){
  21. super.interrupt(b);
  22. if (b && this.serverSocket != null) {
  23. try {
  24. this.serverSocket.close();
  25. } catch (IOException e) {
  26. Log.e("WiFiP2pServerTask", e.getMessage());
  27. }
  28. }
  29. }
  30. @Override
  31. public void performInBackground(){
  32. while (!this.isInterrupted()){
  33. try {
  34. this.serverSocket = new ServerSocket(8988);
  35. Log.d("WiFiP2pServerTask", "Server: Socket opened");
  36. Socket client = this.serverSocket.accept();
  37. Log.d("WiFiP2pServerTask", "Server: connection done");
  38. this.handleConnection(client, this.serverSocket);
  39. client.close();
  40. serverSocket.close();
  41. } catch (ClassNotFoundException e){
  42. Log.e(WiFiDirectActivity.TAG, e.getMessage());
  43. } catch (IOException e) {
  44. Log.e(WiFiDirectActivity.TAG, e.getMessage());
  45. }
  46. }
  47. }
  48. private void handleConnection(Socket client, ServerSocket server) throws IOException, ClassNotFoundException {
  49. InputStream is = client.getInputStream();
  50. ObjectInputStream ois = new ObjectInputStream(is);
  51. OutputStream os = client.getOutputStream();
  52. ObjectOutputStream oos = new ObjectOutputStream(os);
  53. Object obj = ois.readObject();
  54. while (obj != null && obj instanceof WiFiP2pSerializableObject) {
  55. WiFiP2pSerializableObject receivedObj = ( WiFiP2pSerializableObject) obj;
  56. obj = null;
  57. WiFiP2pSerializableObject toSend = this.handleReceivedObject(receivedObj);
  58. if (toSend != null) {
  59. oos.writeObject(toSend);
  60. oos.flush();
  61. oos.reset();
  62. }
  63. obj = ois.readObject();
  64. }
  65. oos.close();
  66. os.close();
  67. ois.close();
  68. is.close();
  69. }
  70. public WiFiP2pSerializableObject handleReceivedObject(WiFiP2pSerializableObject receivedObj){
  71. return null;
  72. }
  73. }