Sockets 如何让系统在socket编程中为我选择端口号?

Sockets 如何让系统在socket编程中为我选择端口号?,sockets,port,Sockets,Port,如何让系统在c中的connect()调用中为我选择端口号下面是我的代码,我使用5000作为端口号。问题是每次我都必须不断更改端口号,因为它会引发异常 听:地址已在使用中 如何摆脱这个我想修复端口号而不在将来进行更改有可能吗 int main(void) { int sockfd = 0,n = 0; char recvBuff[1024]; struct sockaddr_in serv_addr; memset(recvBuff, '0' ,sizeof(rec

如何让系统在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;
        }
int main(无效)
{
int sockfd=0,n=0;
char recvBuff[1024];
服务地址中的结构sockaddr\u;
memset(recvBuff,'0',sizeof(recvBuff));
if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0)
{
printf(“\n错误:无法创建套接字\n”);
返回1;
}
serv_addr.sin_family=AF_INET;
serv_addr.sin_port=htons(5000);//如何跳过已在使用的地址?
serv_addr.sin_addr.s_addr=inet_addr(“127.0.0.1”);
如果(connect(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr))签入,请选择之前未分配或注册的。在您的情况下,端口号
5000
是已注册并用于
commplex main
的TCP端口


注意:不要在系统进程使用的
0-1023
之间选择端口。

在这段代码中,您没有使用
listen
,我看不出它是如何产生错误的。在绑定服务器上的端口时,您可能只需要使用
SO\u REUSEADDR
选项。这将允许您重新使用相同的端口重新启动服务器。如何关闭套接字?如果未正确关闭,则该地址通常会保留一段时间while@Barmar先生,我不知道如何使用so_REUSEADDR plz,你能不能把它写进代码里?他在系统上运行一个复杂的主服务器的可能性有多大?他说他必须继续更改端口,这可能是标准的
问题,因此\u REUSEADDR
问题。@Barmar可能您所说的应该是正确的。请回答我的问题。