Sockets 如何让系统在socket编程中为我选择端口号?
如何让系统在c中的connect()调用中为我选择端口号下面是我的代码,我使用5000作为端口号。问题是每次我都必须不断更改端口号,因为它会引发异常 听:地址已在使用中 如何摆脱这个我想修复端口号而不在将来进行更改有可能吗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
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可能您所说的应该是正确的。请回答我的问题。