【问题标题】:Cant connect port 9150 c++ [closed]无法连接端口 9150 c++ [关闭]
【发布时间】:2013-08-10 21:08:52
【问题描述】:

我正在尝试使用以下代码连接到 localhost (TOR) 上的端口 9150:

WORD wVersionRequested = MAKEWORD(2,0);
WSADATA wsaData;
if(WSAStartup(wVersionRequested,&wsaData) != 0)
{
    return 1;
}
int fd = socket(AF_INET, SOCK_STREAM, 0);
if(fd < 0)
{
    printf("error 0");
}

struct sockaddr_in saddr;
saddr.sin_port = htons(9150);
saddr.sin_family = AF_INET;
saddr.sin_addr.s_addr = inet_addr("127.0.0.1");
connect(fd, (struct sockaddr *)&saddr, sizeof(saddr));
if(fd > 0)
{
    printf("error 1");
}

失败并出现“错误 1”。 TOR/Vidalia 正在这个端口上运行,一切正常,所以错误必须在我的代码中。请帮帮我。

【问题讨论】:

  • if (fd &gt; 0) 应该完成什么?你检查connect()的返回码了吗?
  • 是的,看起来倒置了
  • 不仅不倒转连接也不会影响套接字描述符
  • 这里没有证据表明 connect() 失败,只是一个编程错误。你的成功测试是错误的。顺便说一句,“错误 1”非常没用。如果您确实收到错误并正确测试,请使用perror()strerror[]:不要只是编造自己的无意义错误消息。

标签: c port tor


【解决方案1】:

这里的小事:

#include <stdio.h> /* for perror() */

WORD wVersionRequested = MAKEWORD(2,0);
WSADATA wsaData;
if(WSAStartup(wVersionRequested,&wsaData) != 0)
{
    return 1;
}

int fd = socket(AF_INET, SOCK_STREAM, 0);
int rv = 0;

if(fd < 0)
{
     perror("socket");
     exit(fd); /* or return */
}

struct sockaddr_in saddr;
saddr.sin_port = htons(9150);
saddr.sin_family = AF_INET;
saddr.sin_addr.s_addr = inet_addr("127.0.0.1");

你的核心问题在下面的代码中

rv = connect(fd, (struct sockaddr *)&saddr, sizeof(saddr));
if(rv < 0)
{
     perror("connect");
     exit(rv); /* or return */
}

【讨论】:

    猜你喜欢
    • 2012-06-19
    • 2014-02-09
    • 2014-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多