用C连接到主机

connect to host in C

本文关键字:主机 连接      更新时间:2023-10-16

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

int main(int argc, char ** argv)
{
    if (argc<2){
        printf("Need more argumentsn");
        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
...
}

不能这样分配主机给s_addr。您需要将它从字符串主机名/ip号转换为s_addr

的正确格式。

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

我建议谷歌的一些例子客户端/服务器代码…有很多。