连接到C中的主机

时间:2013-05-02 18:50:15

标签: c++ c linux unix

我必须连接到hostport。端口是const,但host变量应该从shell输入。 我有一个错误。

int main(int argc, char ** argv)
{
    if (argc<2){
        printf("Need more arguments\n");
        return 1;
    }
    int sock;
    if((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0){
        perror("socket creating error");
        return 1;
    }

    struct sockaddr_in addr;
    addr.sin_family = AF_INET;
    addr.sin_port = htons(22222);
    addr.sin_addr.s_addr = argv[1];    // try to conect host
...
}

1 个答案:

答案 0 :(得分:4)

您无法将主机分配给s_addr。您需要将其从字符串主机名/ IP号转换为s_addr

的正确格式

如果您是POSIX,请查看getaddrinfo(),否则您可以使用inet_addr()gethostbyname()gethostbyaddr()等内容。关键是,需要进行转换。

我建议使用谷歌来获取一些示例客户端/服务器代码...这里有很多。包括SO。