SocketConnectImpl.cpp 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #include "RestfulFunc.h"
  2. #include<sys/socket.h>
  3. #include<sys/types.h>
  4. #include<netinet/in.h>
  5. #include<netinet/ip_icmp.h>
  6. #include<arpa/inet.h>
  7. #include<unistd.h>
  8. #include<sys/time.h>
  9. #include <string.h>
  10. int SocketConnectTest(const std::string& addrIP, int nPort, std::string& out_msg)
  11. {
  12. int sockfd = socket(AF_INET, SOCK_STREAM, 0);
  13. if (sockfd < 0) {
  14. out_msg = "create socket failed:";
  15. out_msg += strerror(errno);
  16. return -1;
  17. }
  18. struct sockaddr_in serveraddr;
  19. bzero(&serveraddr, sizeof(serveraddr));
  20. serveraddr.sin_family = AF_INET;
  21. serveraddr.sin_port = htons(nPort);
  22. if (inet_pton(AF_INET, addrIP.c_str(), &serveraddr.sin_addr) < 0) {
  23. close(sockfd);
  24. out_msg = "inet_pton failed:";
  25. out_msg += strerror(errno);
  26. return -2;
  27. }
  28. if (0 > connect(sockfd, (struct sockaddr*)&serveraddr, sizeof(serveraddr))) {
  29. close(sockfd);
  30. out_msg = "connect failed:";
  31. out_msg += strerror(errno);
  32. return -3;
  33. }
  34. close(sockfd);
  35. return 0;
  36. }