본문 바로가기

공부/LinuxServer

3. 클라이언트의 접속요청 확인하기 - listen()

1. header

#include <sys/socket.h>

 

2. function

int listen(int socket, int backlog);

1) int socket : 클라이언트의 접속요청을 받도록 설정 할 소켓 디스크립터.

2) int backlog 대기 메시지 큐의 개수

3) return :

성공

실패

0

-1

 

3. 사용

#include <stdio.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <errno.h>

#define PORT 80
int main()
{
	int sock = socket(AF_INET, SOCK_STREAM, 0);

	struct sockaddr_in addr;
	socklen_t len = sizeof(addr);

	addr.sin_family = AF_INET;
	addr.sin_port = htons(PORT);
	addr.sin_addr.s_addr = htonl(INADDR_ANY);

	if(bind(sock, (struct sockaddr*)&addr, len) == -1){
		fprintf(stderr, "Bind Error : %s\n", strerror(errno));
		close(sock);
		return(-1);
	}else printf("bind\n");
    
	if (listen(sock, 5) == -1) {
		printf("listen fail\n");
	}
}