【发布时间】:2013-12-02 13:22:19
【问题描述】:
我正在使用连接功能 (http://linux.die.net/man/2/connect),它只在某些时候有效。以前一直能正常工作,现在基本没用了。自从我大约 2 周前第一次编写代码以来,代码没有改变,所以结果不应该改变。我认为这与我的网络有关。我正在使用端口 5301(几乎是随机选择的)所以也许有某种阻塞发生了?我使用的是本地 IP 127.0.0.1。
服务器代码:
int connectionID = 0, listenID = 0;
struct sockaddr_in sad;
listenID = socket (AF_INET, SOCK_STREAM, 0);
memset (&sad, 0, sizeof(sad));
sad.sin_family = AF_INET;
sad.sin_addr.s_addr = INADDR_ANY;
sad.sin_port = htons(5301);
bind (listenID, (struct sockaddr *)&sad, sizeof(sad));
客户端代码:
int sockID = 0;
struct sockaddr_in sad;
sockID = socket (AF_INET, SOCK_STREAM, 0);
sad.sin_family = AF_INET;
sad.sin_port = htons(5301);
inet_pton (AF_INET, serverIP, &sad.sin_addr.s_addr);
if (connect (sockID, (struct sockaddr *)&sad, sizeof(sad)) < 0)
{
printf ("Error Connecting to Server\n");
return;
}
IP作为参数传入
【问题讨论】:
-
未创建连接时出现什么错误?这可能会为这个主题指明一些方向。 :)
-
连接被拒绝是 errno 吐出来的。它是随机的,它只是连续工作了两次。但之前 50 次尝试中没有一次。