当前位置: 技术问答>linux和unix
need your help! 网络编程中出现bind error!!谢谢!
来源: 互联网 发布时间:2015-09-24
本文导语: 我自己做个实验,就是写一个服务器端的小程序,监听客户端的请求,然后接收客户端发来的数据。 编译没有问题,但是在运行的时候,出现了下面的错误报告:bind:Socket operation on non-socket 请教大侠,我的程序中...
我自己做个实验,就是写一个服务器端的小程序,监听客户端的请求,然后接收客户端发来的数据。
编译没有问题,但是在运行的时候,出现了下面的错误报告:bind:Socket operation on non-socket
请教大侠,我的程序中都是按照书上的例子编写的啊,怎么会出现这个错误,谢谢!!!
下面是程序的源代码:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define PORT 10000
#define MAXBUFF 50
int main()
{
int sockfd, new_sock;
struct sockaddr_in addr;
int sin_size;
int numbytes;
char buffer[MAXBUFF];
if(sockfd=socket(AF_INET,SOCK_STREAM,0)==-1)
{
perror("socket");
exit(1);
}
addr.sin_family=AF_INET;
addr.sin_port=htons(PORT);
addr.sin_addr.s_addr=INADDR_ANY;
bzero(&(addr.sin_zero),8);
if(bind(sockfd,(struct sockaddr *)&addr,sizeof(struct sockaddr))==-1)
{
perror("bind");
exit(1);
}
if(listen(sockfd,5)==-1)
{
perror("listen");
exit(1);
}
while(1)
{
sin_size=sizeof(struct sockaddr_in);
if(new_sock=accept(sockfd,(struct sockaddr*)&addr,&sin_size)==-1)
{
perror("accetp");
continue;
}
if(!fork())
{
if(numbytes=recv(new_sock,buffer,MAXBUFF,0)==-1)
{
perror("recv");
close(new_sock);
exit(0);
}
printf("the new_dgw is:%sn",&buffer);
close(new_sock);
while(waitpid(-1,NULL,WNOHANG)>0);
}
}
}
编译没有问题,但是在运行的时候,出现了下面的错误报告:bind:Socket operation on non-socket
请教大侠,我的程序中都是按照书上的例子编写的啊,怎么会出现这个错误,谢谢!!!
下面是程序的源代码:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define PORT 10000
#define MAXBUFF 50
int main()
{
int sockfd, new_sock;
struct sockaddr_in addr;
int sin_size;
int numbytes;
char buffer[MAXBUFF];
if(sockfd=socket(AF_INET,SOCK_STREAM,0)==-1)
{
perror("socket");
exit(1);
}
addr.sin_family=AF_INET;
addr.sin_port=htons(PORT);
addr.sin_addr.s_addr=INADDR_ANY;
bzero(&(addr.sin_zero),8);
if(bind(sockfd,(struct sockaddr *)&addr,sizeof(struct sockaddr))==-1)
{
perror("bind");
exit(1);
}
if(listen(sockfd,5)==-1)
{
perror("listen");
exit(1);
}
while(1)
{
sin_size=sizeof(struct sockaddr_in);
if(new_sock=accept(sockfd,(struct sockaddr*)&addr,&sin_size)==-1)
{
perror("accetp");
continue;
}
if(!fork())
{
if(numbytes=recv(new_sock,buffer,MAXBUFF,0)==-1)
{
perror("recv");
close(new_sock);
exit(0);
}
printf("the new_dgw is:%sn",&buffer);
close(new_sock);
while(waitpid(-1,NULL,WNOHANG)>0);
}
}
}
|
if(sockfd=socket(AF_INET,SOCK_STREAM,0)==-1)
改成
if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
改成
if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。