我正在尝试打开远程服务器的套接字,但是如果另一端没有响应,我想抛出一个异常。出于某种原因,我尝试使用PORT 80的任何IP似乎都可以“连接”,即使它是完全随机的IP。
我将尝试通过一个例子来传达这个问题。
这将超时并引发异常:
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE * fptr; //Ρευμα
char ch;
fptr = fopen("UNITS.txt", "r");
if (fptr == NULL)
{
printf("Cannot open file \n");
exit(0);
}
// Read contents from file
ch = fgetc(fptr);
while ((ch = fgetc(fptr)) != EOF){
printf("%c", ch);
}
fclose(fptr);
return 0;
}
另一方面,以下操作将继续正常进行,就好像连接成功一样:
Socket s = new Socket();
s.connect(new InetSocketAddress("1.2.3.4", 81), SOME_TIMEOUT_CONST);
我似乎无法找出原因。
如果这是预期的行为,我该如何检查在情况2中它实际上没有连接?
编辑:我在朋友的PC上运行了相同的代码,两种情况都超时并引发了异常。因此,这可能与我的Mac有关。不知道是什么...