socket编程里关于bind的问题

我要做一个ftp的server,bind时总是返回-1,快疯了啊源代码如下structsockaddr_inserver_address;intserver_sockfd... 我要做一个ftp的server,bind时总是返回-1,快疯了啊
源代码如下
struct sockaddr_in server_address;
int server_sockfd;
int server_bind;
int server_listen;

memset(&server_address,0,sizeof(server_address));
server_address.sin_family = AF_INET;
server_address.sin_addr.s_addr = htonl(INADDR_ANY);
server_address.sin_port = htons(21);

server_sockfd = socket(PF_INET,SOCK_STREAM,0);
server_bind = bind(server_sockfd,(struct sockaddr *)&addr,sizeof(addr));
printf("%d",server_bind);
server_listen = listen(server_sockfd,100);

那个printf里总打印的是-1啊。。。
展开
 我来答
匿名用户
2012-05-06
展开全部
你是在linux下么? linux下21号端口绑定需要root权限。

检查下是什么错误:
if(server_bind == -1) {
perror("bind");
return 1;
}
hujinc
2012-05-07 · TA获得超过543个赞
知道小有建树答主
回答量:1350
采纳率:30%
帮助的人:244万
展开全部
你去查一下bind返回值-1具体代表什么,不就完了吗?

如果是-1表示失败,那么失败的可能是否是你的端口21已经被其它软件绑定了的?

你想试一下你的代码有没有问题,你就随便自定义个端口号,基本没人用的。

再测试下,就可以知道,你的代码是否有问题了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fei3189
2012-05-07 · TA获得超过115个赞
知道答主
回答量:95
采纳率:0%
帮助的人:42.8万
展开全部
server_address.sin_addr.s_addr = htonl(INADDR_ANY);
这句有问题吧,应该是
server_address.sin_addr.s_addr =INADDR_ANY;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式