当前位置: 技术问答>linux和unix
把setsockopt设置成REUSEADDR,为什么bind()还总是失败呢?
来源: 互联网 发布时间:2017-03-19
本文导语: #include #include #include #include /*定义close()*/ #include /*数据类型定义*/ #include /*提供socket函数结构*/ #include /*定义数据结构sockaddr_in*/ #include /*提供IP地址转换函数*/ #include /*提供设置获取域名的函数*/ #define BACKLOG 1 #defin...
#include
#include
#include
#include /*定义close()*/
#include /*数据类型定义*/
#include /*提供socket函数结构*/
#include /*定义数据结构sockaddr_in*/
#include /*提供IP地址转换函数*/
#include /*提供设置获取域名的函数*/
#define BACKLOG 1
#define PORT 2234
int main(int argc,char *argv[])
{
int socketfd,connectfd;
struct sockaddr_in server;
struct sockaddr_in client;
socklen_t sin_size;
if((socketfd=socket(AF_INET,SOCK_STREAM,0))==-1)
{
perror("creat socketfd failed!");
exit(1);
}
int opt=SO_REUSEADDR;
setsockopt(socketfd,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt));
bzero(&server,sizeof(server));
server.sin_family=AF_INET;
server.sin_port=htons(PORT);
server.sin_addr.s_addr=htonl(INADDR_ANY);
if(bind(socketfd,(struct sockaddr *)&server,sizeof(struct sockaddr))==-1);
{
perror("bind error!");
exit(1);
}
if((listen(socketfd,BACKLOG))==-1)
{
perror("listen failed!");
exit(1);
}
sin_size=sizeof(struct sockaddr_in);
if((connectfd=accept(socketfd,(struct sockaddr *)&client,&sin_size))==-1)
{
perror("accept failed!");
exit(1);
}
printf("you got a connection from%s:n",inet_ntoa(client.sin_addr));
send(connectfd,"connect to servern",20,0);
close(connectfd);
close(socketfd);
return 0;
}
|
楼主要仔细哇!
if(bind(socketfd,(struct sockaddr *)&server,sizeof(struct sockaddr))==-1);这句后面多了一个分号!所以if后面的语句跟if就木有关系了。
if(bind(socketfd,(struct sockaddr *)&server,sizeof(struct sockaddr))==-1);这句后面多了一个分号!所以if后面的语句跟if就木有关系了。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。