【发布时间】:2013-05-19 01:31:20
【问题描述】:
我用 C 创建了一个 Linux 网络应用程序,它有点工作
除了每次我运行它时,它都会绑定到一个新的随机端口
//Create Socket
int socket_desc;
socket_desc=socket(AF_INET,SOCK_STREAM,0);
if (socket_desc==-1)
perror("Create socket");
struct sockaddr_in address;
address.sin_family = AF_INET;
address.sin_addr.s_addr = INADDR_ANY;
//Port defined Here:
address.sin_port=htons(81);
//Bind
bind(socket_desc,(struct sockaddr *)&address,sizeof(address));
listen(socket_desc,32);
//Do other stuff (includes accepting connections)
你可以看到我已经指定了端口,但它仍然选择一个免费的随机端口
感谢任何帮助或链接到一个很好的教程
【问题讨论】:
-
非root用户无法绑定1024下的端口,你的绑定可能失败,你没有检查。试试
strace吧 -
你试过给一个不大于 1024 的端口吗?试试吧。它会工作的
-
if (bind(...) == -1) ERROR -
您已经为
socket通话做到了。继续为其他功能做这件事。我还建议您查看功能手册页。可以找到一组在线手册页here。
标签: c networking port bind