WiFiP2pServerTask.java 2.6 KB

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