int make_sock(int port, int users)
{
int sock;
struct sockaddr_in my_addr;
int iSockOpt;
if((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
perror("SOCKET");
return (-1);
}
my_addr.sin_family = AF_INET;
my_addr.sin_port = htons(port);
my_addr.sin_addr.s_addr = INADDR_ANY;
bzero(&(my_addr.sin_zero), 8); // set the rest of the struct
// prevent bind error
iSockOpt = 1;
setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &iSockOpt, sizeof(iSockOpt));
if(bind(sock, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) < 0)
{
perror("SOCKET BIND");
close(sock);
return (-1);
}
if(listen(sock, users) < 0)
{
perror("SOCKET LISTEN");
close(sock);
return (-1);
}
return sock;
}
{
int sock;
struct sockaddr_in my_addr;
int iSockOpt;
if((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
perror("SOCKET");
return (-1);
}
my_addr.sin_family = AF_INET;
my_addr.sin_port = htons(port);
my_addr.sin_addr.s_addr = INADDR_ANY;
bzero(&(my_addr.sin_zero), 8); // set the rest of the struct
// prevent bind error
iSockOpt = 1;
setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &iSockOpt, sizeof(iSockOpt));
if(bind(sock, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) < 0)
{
perror("SOCKET BIND");
close(sock);
return (-1);
}
if(listen(sock, users) < 0)
{
perror("SOCKET LISTEN");
close(sock);
return (-1);
}
return sock;
}
'UNIX_LINUX_C_C++' 카테고리의 다른 글
Linux 에서 pthread를 최대 생성가능한 thread 수를 측정 (0) | 2011.10.16 |
---|---|
C에서 C++ 작성한 라이브러리를 사용하고자 한다면? (0) | 2011.10.16 |
Poll_thread 소켓 (0) | 2011.10.16 |
extern의 사용 (0) | 2011.10.16 |
GDB를 이용한 디버깅 (0) | 2011.10.16 |