网络 服务端 建立服务监听描述符 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;
 
}
阅读更多
想对作者说点什么?

博主推荐

换一批

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