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啊。。。 展开
源代码如下
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啊。。。 展开
3个回答
2012-05-06
展开全部
你是在linux下么? linux下21号端口绑定需要root权限。
检查下是什么错误:
if(server_bind == -1) {
perror("bind");
return 1;
}
检查下是什么错误:
if(server_bind == -1) {
perror("bind");
return 1;
}
展开全部
你去查一下bind返回值-1具体代表什么,不就完了吗?
如果是-1表示失败,那么失败的可能是否是你的端口21已经被其它软件绑定了的?
你想试一下你的代码有没有问题,你就随便自定义个端口号,基本没人用的。
再测试下,就可以知道,你的代码是否有问题了。
如果是-1表示失败,那么失败的可能是否是你的端口21已经被其它软件绑定了的?
你想试一下你的代码有没有问题,你就随便自定义个端口号,基本没人用的。
再测试下,就可以知道,你的代码是否有问题了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
server_address.sin_addr.s_addr = htonl(INADDR_ANY);
这句有问题吧,应该是
server_address.sin_addr.s_addr =INADDR_ANY;
这句有问题吧,应该是
server_address.sin_addr.s_addr =INADDR_ANY;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询