看到下面的代碼:什麼IP地址不接受退貨
我的客戶從本地主機連接。 我在輸出中得到了一個荒謬的地址。這不是我的IP地址。每當我運行代碼我得到一個不同的IP地址。當我ping那個IP地址時,我沒有得到任何迴應。
是什麼原因。
我在windows vista的虛擬機上運行suse linux。
更新:
bzero(&cliaddr, sizeof(cliaddr));
int connfd = accept(sockfd, (struct sockaddr*)&cliaddr, &slen);
if (sem_wait(&mutex) < 0)
err_sys("sem_init error");
char ipv4addr[100];
cout << inet_ntop(AF_INET, &cliaddr.sin_addr, ipv4addr, 100) << endl;
//const char* p = inet_ntop(AF_INET, &cliaddr.sin_addr, ipv4addr, 100);
//cout << p << endl;
//cout << (void*)p << " " << (void*)ipv4addr << endl;
這個返回地址爲0.0.0.0
如果我取消註釋行,我得到了所有行的正確地址,127.0.0.1
我在代碼中看到一個信號量 - 確保其他線程不會同時使用相同的地址結構。即這可能是一種競爭條件。 –
該代碼不會將'slen'參數初始化爲accept調用。確保你將slen設置爲sizeof(cliaddr)。 – nos
@Nikolai:只有一個線程運行 –