c - Bsd 套接字如何找到用于连接的服务器端口号?

标签 c sockets client-server

我有一个服务器:

./server portNumber

我有一个客户:

./client serverIpAddress

我在客户端只有服务器IP地址。我想连接到服务器套接字。但是每次 Server Port Number 都不一样。如何在客户端使用 BSD 套接字连接到服务器套接字?不可能吗?我必须知道服务器端口号吗?

简单使用 BSD 套接字:

    int socket_desc;
    struct sockaddr_in server;

    //Create socket
    socket_desc = socket(AF_INET , SOCK_STREAM , 0);
    if (socket_desc == -1)
    {
        printf("Could not create socket");
    }

    server.sin_addr.s_addr = inet_addr(ipAddress);
    server.sin_family = AF_INET;
    server.sin_port = htons( ThisIsServerPortNumber );

    //Connect to remote server
    if (connect(socket_desc , (struct sockaddr *)&server , sizeof(server)) < 0)
    {
        puts("connect error");
        return 1;
    }

最佳答案

选择 port number 49152 和 65535 之间用于开发。如果您的想法成功,您需要注册一个介于 1024 和 49151 之间的端口号。从 0 到 1023 的端口号是众所周知的端口,例如端口 80 用于 HTTP 服务器。

TCP Port Service Multiplexer协议(protocol)旨在允许发现 TCP 服务器的端口号,但由于安全问题很少使用。

关于c - Bsd 套接字如何找到用于连接的服务器端口号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37370041/

相关文章:

python - 如何在python中创建一个简单的代理?

客户端使用C使用TCP套接字将数据发送到端口

java - java中从服务器向多个客户端发送消息

python - 停止tornado.TCPServer而不等待连接关闭

c - Erlang 产生大量 C 进程

c - "%FF"目录错误?似乎是由于触摸 [C]

c - 数组中有符号和无符号字符的索引有什么区别?

c++ - 虚幻引擎 4 : Recv function would keep blocking when TCP server shutdown

android - 我必须重新启动我的 Java 套接字连接才能进行多文件传输

c - 高斯赛德尔法不适用于特定输入