如何让系统在套接字编程中为我选择端口号?

How to make system choose port no for me in socket programming?

如何让系统在 c 中的 connect() 调用中为我选择端口号 下面是我的代码,其中我使用 5000 作为端口号,问题是每次我都必须继续更改端口号,因为它抛出异常为 ?

听:地址已被使用

如何摆脱这个我想在以后不做任何更改的情况下修复端口号,这可能吗?

int main(void)
{
    int sockfd = 0,n = 0;
    char recvBuff[1024];
    struct sockaddr_in serv_addr;
    memset(recvBuff, '0' ,sizeof(recvBuff));
    if((sockfd = socket(AF_INET, SOCK_STREAM, 0))< 0)
        {
            printf("\n Error : Could not create socket \n");
            return 1;
        }

    serv_addr.sin_family = AF_INET;
    serv_addr.sin_port = htons(5000);  //how to skip Address already in use?

    serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
    if(connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr))<0)
        {
            printf("\n Error : Connect Failed \n");
            return 1;
        }

签入 IANA Port number Listing,选择之前未分配或注册的。在您的例子中,端口号 5000 是一个已经注册并用于 commplex-main 的 TCP 端口。

注意:不要选择 0 - 1023 之间的端口,因为它们被系统进程使用。