-7

我必须连接到hostport。端口是常量,但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
...
}
4

1 回答 1

4

您不能将主机分配给s_addr这样的人。您需要将其从字符串主机名/IP 号转换为正确的格式s_addr

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

我建议谷歌搜索一些示例客户端/服务器代码......有很多。包括这里。

于 2013-05-02T18:55:18.777 回答