Guest User

Untitled

a guest
Mar 23rd, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.16 KB | None | 0 0
  1. #include "TCPClient.h"
  2.  
  3. TCPClient::TCPClient()
  4. {
  5. sock = -1;
  6. port = 0;
  7. address = "";
  8. }
  9.  
  10. bool TCPClient::setup(string address , int port)
  11. {
  12. if(sock == -1)
  13. {
  14. sock = socket(AF_INET , SOCK_STREAM , 0);
  15. if (sock == -1)
  16. {
  17. cout << "Could not create socket" << endl;
  18. }
  19. }
  20. if(inet_addr(address.c_str()) == -1)
  21. {
  22. struct hostent *he;
  23. struct in_addr **addr_list;
  24. if ( (he = gethostbyname( address.c_str() ) ) == NULL)
  25. {
  26. herror("gethostbyname");
  27. cout<<"Failed to resolve hostname\n";
  28. return false;
  29. }
  30. addr_list = (struct in_addr **) he->h_addr_list;
  31. for(int i = 0; addr_list[i] != NULL; i++)
  32. {
  33. server.sin_addr = *addr_list[i];
  34. break;
  35. }
  36. }
  37. else
  38. {
  39. server.sin_addr.s_addr = inet_addr( address.c_str() );
  40. }
  41. server.sin_family = AF_INET;
  42. server.sin_port = htons( port );
  43. if (connect(sock , (struct sockaddr *)&server , sizeof(server)) < 0)
  44. {
  45. perror("connect failed. Error");
  46. return false;
  47. }
  48. return true;
  49. }
  50.  
  51.  
  52. bool TCPClient::Send(string data)
  53. {
  54. if(sock != -1)
  55. {
  56. if( send(sock , data.c_str() , strlen( data.c_str() ) , 0) < 0)
  57. {
  58. cout << "Send failed : " << data << endl;
  59. return false;
  60. }
  61. }
  62. else
  63. return false;
  64. return true;
  65. }
  66.  
  67. bool TCPClient::Send(struct message &msg )
  68. {
  69. if(sock != -1)
  70. {
  71. if( send(sock , (void*)&msg , sizeof(msg), 0) < 0)
  72. {
  73. cout << "Send failed : " << msg.magic << endl;
  74. return false;
  75. }
  76. }
  77. else
  78. return false;
  79. return true;
  80. }
  81.  
  82. string TCPClient::receive(int size)
  83. {
  84. char buffer[size];
  85. memset(&buffer[0], 0, sizeof(buffer));
  86.  
  87. string reply;
  88. if( recv(sock , buffer , size, 0) < 0)
  89. {
  90. cout << "receive failed!" << endl;
  91. return nullptr;
  92. }
  93. buffer[size-1]='\0';
  94. reply = buffer;
  95. return reply;
  96. }
  97.  
  98. string TCPClient::read()
  99. {
  100. char buffer[1] = {};
  101. string reply;
  102. while (buffer[0] != '\n') {
  103. if( recv(sock , buffer , sizeof(buffer) , 0) < 0)
  104. {
  105. cout << "receive failed!" << endl;
  106. return nullptr;
  107. }
  108. reply += buffer[0];
  109. }
  110. return reply;
  111. }
  112.  
  113. void TCPClient::exit()
  114. {
  115. close( sock );
  116. }
Add Comment
Please, Sign In to add comment