Advertisement
Guest User

Untitled

a guest
Mar 29th, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.19 KB | None | 0 0
  1. package exercicio1;
  2.  
  3. import java.io.ByteArrayInputStream;
  4. import java.io.ByteArrayOutputStream;
  5. import java.io.DataInputStream;
  6. import java.io.DataOutputStream;
  7. import java.io.IOException;
  8. import java.io.ObjectInputStream;
  9. import java.io.ObjectOutputStream;
  10. import java.net.Socket;
  11. import java.util.Random;
  12.  
  13.  
  14. public class ClientTCP extends Thread {
  15.  
  16. private final String TheOneRing =
  17. "Three Rings for the Elven-kings under the sky,"
  18. + "Seven for the Dwarf-lords in halls of stone,"
  19. + "Nine for Mortal Men doomed to die,"
  20. + "One for the Dark Lord on his dark throne,"
  21. + "In the Land of Mordor where the Shadows lie,"
  22. + "One Ring to rule them all,"
  23. + "One Ring to find them,"
  24. + "One Ring to bring them all and in the darkness bind them,"
  25. + "In the Land of Mordor where the Shadows lie";
  26.  
  27. private String[] strings = TheOneRing.split(",");
  28. private String host;
  29. private int port;
  30. private Socket clientSocket;
  31. private DataOutputStream outToServer;
  32. private DataInputStream inFromServer;
  33. private int sentMessageSize;
  34. private int receiveMessageSize;
  35. private Random rng = new Random();
  36. private int selectedNumber;
  37. private Message receivedMessage;
  38.  
  39.  
  40. public ClientTCP(String host1, int port){
  41. this.host = host1;
  42. this.port = port;
  43. }
  44.  
  45. public void run(){
  46. while(true){
  47. try {
  48. selectedNumber = rng.nextInt(8);
  49. send(new Message(strings[selectedNumber]));
  50. System.out.println("Text Sent to Server: "+ strings[selectedNumber]);
  51. receivedMessage = deserialize(receive());
  52. System.out.println("Text Received From Server: " + receivedMessage.getMessage());
  53. wait(2000);
  54. } catch(Exception e){
  55. e.printStackTrace();
  56. }
  57. }
  58. }
  59.  
  60. public void send(Message message) throws IOException, InterruptedException {
  61.  
  62. byte[] msg = serialize(message);
  63. clientSocket = new Socket(host, port);
  64. outToServer = new DataOutputStream(clientSocket.getOutputStream());
  65. inFromServer = new DataInputStream(clientSocket.getInputStream());
  66.  
  67. sentMessageSize = msg.length;
  68. outToServer.writeInt(sentMessageSize);
  69. outToServer.write(msg, 0, sentMessageSize); //int off de offset
  70. outToServer.flush();
  71. }
  72.  
  73. public byte [] receive() throws IOException, InterruptedException{
  74. receiveMessageSize = inFromServer.readInt();
  75. byte msg [] = new byte[receiveMessageSize];
  76. inFromServer.read(msg,0,receiveMessageSize);
  77.  
  78. clientSocket.close();
  79. outToServer.close();
  80. inFromServer.close();
  81. return msg;
  82. }
  83.  
  84. public byte[] serialize(Message message) throws IOException{
  85. ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
  86. ObjectOutputStream outStream = new ObjectOutputStream(byteStream);
  87.  
  88. outStream.writeObject(message);
  89. byte[] marshalledMessage = byteStream.toByteArray();
  90.  
  91. return marshalledMessage;
  92. }
  93.  
  94. public Message deserialize(byte[] data) throws IOException, ClassNotFoundException {
  95. ByteArrayInputStream byteStream = new ByteArrayInputStream(data);
  96. ObjectInputStream inputStream = new ObjectInputStream(byteStream);
  97.  
  98. Message unmarshalledMessage = (Message) inputStream.readObject();
  99.  
  100. return unmarshalledMessage;
  101. }
  102.  
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement