SocketConnectImpl.cpp 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #include "RestfulFunc.h"
  2. #include <string>
  3. #if defined(_MSC_VER)
  4. #include <winsock2.h>
  5. #include <ws2tcpip.h>
  6. #include <stdio.h>
  7. #include <tchar.h>
  8. #include <stdarg.h>
  9. #include <string>
  10. #include <vector>
  11. #include <assert.h>
  12. #include <windows.h>
  13. #include <time.h>
  14. #else
  15. #include<sys/socket.h>
  16. #include<sys/types.h>
  17. #include<netinet/in.h>
  18. #include<netinet/ip_icmp.h>
  19. #include<arpa/inet.h>
  20. #include<unistd.h>
  21. #include<sys/time.h>
  22. #include <string.h>
  23. #endif //_MSC_VER
  24. int SocketConnectTest(const std::string& addrIP, int nPort, std::string& out_msg)
  25. {
  26. #if defined(_MSC_VER)
  27. return -1;
  28. #else
  29. int sockfd = socket(AF_INET, SOCK_STREAM, 0);
  30. if (sockfd < 0) {
  31. out_msg = "create socket failed:";
  32. out_msg += strerror(errno);
  33. return -1;
  34. }
  35. struct sockaddr_in serveraddr;
  36. bzero(&serveraddr, sizeof(serveraddr));
  37. serveraddr.sin_family = AF_INET;
  38. serveraddr.sin_port = htons(nPort);
  39. if (inet_pton(AF_INET, addrIP.c_str(), &serveraddr.sin_addr) < 0) {
  40. close(sockfd);
  41. out_msg = "inet_pton failed:";
  42. out_msg += strerror(errno);
  43. return -2;
  44. }
  45. if (0 > connect(sockfd, (struct sockaddr*)&serveraddr, sizeof(serveraddr))) {
  46. close(sockfd);
  47. out_msg = "connect failed:";
  48. out_msg += strerror(errno);
  49. return -3;
  50. }
  51. close(sockfd);
  52. return 0;
  53. #endif //_MSC_VER
  54. }