Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

codingfarm

4. 소켓 네트워크 프로그램 개발 - 6. 연결 요청(connect 함수) 본문

TCP IP 소켓 프로그래밍

4. 소켓 네트워크 프로그램 개발 - 6. 연결 요청(connect 함수)

scarecrow1992 2021. 5. 10. 23:51

 

학습 목표

  • connect 함수의 사용법을 숙지한다

 

  • 클라이언트는 connect 함수를 이용해서 연결 요청을 한다.
  • 연결 소켓을 반환하는 accept 함수와는 달리, connect 함수는 연결 성공 여부만 반환한다
    • server : 듣기 소켓과 연결 소켓이 분리
    • client : 구분 없음, socket 함수로 생성된 소켓 하나로 연결 및 통신을 모두 관리한다.

connect 함수의 원형

1
int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen);
cs

매개변수

  • sockfd : socket 함수로 생성된 소켓 지정 번호
  • serv_addr : 연결할 서버의 ip 주소와 포트 등의 정보를 담아온다
  • addrlen : server_addr의 크기
  • 반환값
    • 0 : 성공
    • -1  실패

함수의 사용법 자체는 accept 함수와 비슷하다. 다만 별도의 소켓을 추가로 생성하지 않는다.

 

connect 함수의 사용 예

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if ((server_sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
    perror("error : ");
    exit(0);
}
 
serveraddr.sin_family = AF_INET;
serveraddr.sin_addr.s_addr = inet_addr("127.0.0.1"); // 자기 자신에게 보낸다
serveraddr.sin_port = htons(3500);
 
client_len = sizeof(serveraddr);
 
if(connect(serer_sockfd, (struct sockaddr *&serveraddr, client_len) == -1) {
    perror("connect error : ");
    exit(0);
}
cs

 

 

 

 

 

 

 

Comments