【发布时间】:2010-10-29 03:34:23
【问题描述】:
当我运行以下代码时:
struct sockaddr_in sin;
int addrlen;
addrlen=sizeof(sin);
memset(&sin, 0, sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_addr.s_addr=inet_addr("123.456.789.112");
sin.sin_port=htons(0); // so that the kernel reserves a unique port for us
sd_server = socket(PF_INET, SOCK_STREAM, 0);
bind(sd_server, (struct sockaddr *) &sin, sizeof(sin));
getsockname(sd_server,(struct sockaddr*)&sin,&addrlen);
port=ntohs(sin.sin_port);
printf("port number = %d\n",port);
根据套接字,我必须得到一个介于 1024 和 5000 之间的端口号,但我得到的端口号大约是 30,000。
我该怎么办?
【问题讨论】:
-
C POSIX API,从你的代码中推导出来?蟒蛇:stackoverflow.com/questions/1365265/… ||爪哇:stackoverflow.com/questions/2675362/… ||壳牌:unix.stackexchange.com/questions/55913/…
标签: sockets kernel tcpclient tcplistener