Advertisement
Guest User

Untitled

a guest
Feb 13th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.91 KB | None | 0 0
  1. package dv201.labb2;
  2. import java.net.InetSocketAddress;
  3. import java.net.Socket;
  4. import java.net.SocketAddress;
  5. import java.io.*;
  6. import java.util.*;
  7.  
  8.  
  9.  
  10. public class TCPEchoClient {
  11. public static int BUFSIZE = 1024;
  12. public static final int MYPORT= 0;
  13. public static final String MSG= "An Echo Message!";
  14. public static int messages;
  15.  
  16. public static void main(String[] args) throws IOException, InterruptedException {
  17. BUFSIZE = Integer.parseInt(args[2]);
  18. messages = Integer.parseInt(args[3]);
  19. //Argument handling
  20. if (args.length != 4) {
  21. System.err.printf("Arguments : Ip Port PackageSize Messages", args[1]);
  22. System.exit(1);
  23. }
  24. //Package size handling
  25. if (BUFSIZE > 64000 || BUFSIZE <= 0 ){
  26. System.err.println("Invalid Buffersize");
  27. System.exit(1);
  28. }
  29.  
  30. //IP adress error handling
  31. //127.0.0.1
  32. int dots = 0;
  33. for (int i = 0; i < args[0].length(); i++){
  34. if(args[0].charAt(i) == '.'){
  35. dots++;
  36. }
  37. }
  38.  
  39. if (dots >3 || dots < 3){
  40. System.err.println("Invalid IP adress");
  41. System.exit(1);
  42. }
  43. String substring = "";
  44. for(int i = 0; i< args[0].length(); i++){
  45. if (args[0].charAt(i) == '.'){
  46. int number = Integer.parseInt(substring);
  47. substring = "";
  48. if (substring.length() > 3){
  49. System.err.println("Invalid IP adress");
  50. System.exit(1);
  51. }
  52. if (number <0 || number > 255){
  53. System.err.println("Invalid IP adress");
  54. System.exit(1);
  55. }
  56.  
  57. }
  58. else{
  59. substring = substring + args[0].charAt(i);
  60. }
  61. }
  62.  
  63. try {
  64. int i = 1;
  65. while (i< messages+1){
  66.  
  67. /* Create socket */
  68. SocketAddress localBindPoint= new InetSocketAddress(MYPORT);
  69. Socket socket= new Socket();
  70. socket.bind(localBindPoint);
  71. DataOutputStream output;
  72. byte[] messageArr = MSG.getBytes();
  73. byte[] returned = new byte[BUFSIZE];
  74.  
  75. /* Create remote endpoint */
  76. SocketAddress remoteBindPoint=
  77. new InetSocketAddress(args[0],
  78. Integer.valueOf(args[1]));
  79. socket.setSendBufferSize(messageArr.length);
  80.  
  81.  
  82. socket.connect(remoteBindPoint);
  83. output = new DataOutputStream(socket.getOutputStream());
  84. output.write(messageArr);
  85. output.flush();
  86. DataInputStream input;
  87. byte[] message = new byte[MSG.getBytes().length];
  88. input = new DataInputStream(socket.getInputStream());
  89. while (Arrays.equals(messageArr, message) == false){
  90. input.read(returned, 0, messageArr.length);
  91. if (returned.length < message.length){
  92.  
  93. }
  94. //System.out.println("Returned");
  95. //System.out.println(new String(returned));
  96. //System.out.println("vs");
  97. //System.out.println(new String(messageArr));
  98. //System.out.println("----");
  99. }
  100. System.out.println("Echo recieved. "+i);
  101. i++;
  102. returned = new byte[messageArr.length];
  103. socket.close();
  104.  
  105. }
  106.  
  107. }
  108. catch(IOException e){
  109. System.out.println(e.getStackTrace());
  110. }
  111.  
  112. }
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement