网络 服务端 建立服务监听描述符 socket setsockopt(reuse) bind listen

 
#define LISTENQ 20
int open_listenfd(int port)
{
 
 int listenfd,optval = 1;
 struct sockaddr_in serveraddr;
 
 if ((listenfd = socket(AF_INET,SOCK_STREAM,0))<0)
 {
  return -1;
 }
 
 if(setsockopt(listenfd,SOL_SOCKET,SO_REUSEADDR,(const void *)&optval,sizeof(int))<0)
 {
  return -2; 
 }
 
 bzero((char *)&serveraddr,sizeof(serveraddr));
 
 serveraddr.sin_family = AF_INET;
 serveraddr.sin_addr.s_addr = htonl(INADDR_ANY);
 serveraddr.sin_port = htons((unsigned short)port);
 
 if (bind(listenfd,(SA *)&serveraddr,sizeof(serveraddr))<0)
 {
  return -3; 
 }
 
 if (listen(listenfd,LISTENQ)<0)
 {
  return -4; 
 }
 return listenfd;
 
}

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试

关闭