[英]Why is this program timing out without any network traffic?
我正在嘗試創建一個簡單的 c++ 程序,在制作套接字和連接到服務器時隱藏 Linux 和 Windows 之間的差異
此代碼的 Linux 部分編譯時沒有任何警告或錯誤,但在解析主機 IP 后超時並且未連接到正在運行的服務器 ( nc -lvnp 7777
)
使用tcpdump -i eth0 -v port 7777
捕獲所有進出運行程序的機器的流量顯示什么
class Socket
{
public:
int initsoc(void);
int connectsoc(int sock, const char * host, int port);
};
int Socket::connectsoc(int sock, const char * host, int port)
#ifdef _WIN32
/* windows part */
#else
struct hostent *server;
struct sockaddr_in server_addr;
struct in_addr *address;
server_addr.sin_family = AF_INET;
server_addr.sin_port = port;
/* resolve host */
server = gethostbyname(host);
if (server == NULL)
{
printf("Error : %s \nFailed to resolve %s:%d", strerror(errno), host, port);
return -1;
}
address = (struct in_addr *) (server->h_addr);
printf("Resolved: [%s] ===> [%s]\n", host, inet_ntoa(*address));
server_addr.sin_addr.s_addr = inet_addr(inet_ntoa(*address));
iResult = connect(sock, (struct sockaddr*)&server_addr, sizeof(server_addr));
printf("Connect returned : %d\n",iResult);
if (iResult < 0)
{
printf("Error: %s\nFailed to connect\n",strerror(errno));
return -1;
}
printf("Connected to [%s:%d]\n",host,port);
return 0;
我試圖在沒有任何 NAT 的情況下在與運行程序的計算機位於同一網絡上的計算機上打開 netcat 偵聽器,但它仍然超時
這就是我的編譯方式和輸出
g++ -Wall -ggdb3 -pedantic -g main.cpp -o app
Resolved: [10.0.0.100] ===> [10.0.0.100]
Connect returned : -1
Error: Connection timed out
Failed to connect
運行代碼的機器的ip是10.0.0.2
運行netcat服務器的機器的ip是10.0.0.100
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.