Chapter 16

63
1 HANNAM UNIVERSITY Http://netwk.hannam.ac.kr Chapter 16 Socket Interface

description

Chapter 16. Socket Interface. CONTENTS. SOME DEFINITIONS SOCKETS BYTE ORDERING ADDRESS TRANSFORMATION BYTE MANIPULATION FUNCTIONS INFORMATION ABOUT REMOTE HOST SOCKET SYSTEM CALLS CONNECTIONLESS ITERATIVE SERVER. CONTENTS (continued). UDP CLIENT-SERVER PROGRAMS - PowerPoint PPT Presentation

Transcript of Chapter 16

Page 1: Chapter 16

1HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

Chapter 16

SocketInterface

Page 2: Chapter 16

2HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

CONTENTSCONTENTS• SOME DEFINITIONS• SOCKETS• BYTE ORDERING• ADDRESS TRANSFORMATION• BYTE MANIPULATION FUNCTIONS• INFORMATION ABOUT REMOTE HOST• SOCKET SYSTEM CALLS• CONNECTIONLESS ITERATIVE SERVER

Page 3: Chapter 16

3HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

CONTENTS (continued)CONTENTS (continued)• UDP CLIENT-SERVER PROGRAMS• CONNECTION-ORIENTED CONCURRENT SERVER• TCP CLIENT-SERVER PROGRAMS

Page 4: Chapter 16

4HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

SOME DEFINITIONS

16.116.1

Page 5: Chapter 16

5HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.1 16.1 정의정의

소켓소켓 인터페이스는 UNIX BSD 의 일환으로 개발UNIX 에 기반을 두고 있으며 UNIX 에서 파일을

엑세스하기 위해서 사용되는 시스템 콜의 확장(System Call)

어떤 통신망의 특정 노드상의 특정 서비스를 식별하는 식별자 , 소켓은 노드 주소와 서비스를 식별하는 포트번호로 구성된다 .

인터넷 노드상의 포트 80 은 WWW(World Wide Web) 서버를 표시한다 .

Page 6: Chapter 16

6HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.1 16.1 정의정의

데이터 유형

Page 7: Chapter 16

7HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.1 16.1 정의정의

인터넷 주소 구조

Page 8: Chapter 16

8HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.1 16.1 정의정의

소켓 주소

Page 9: Chapter 16

9HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

SOCKETS

16.216.2

Page 10: Chapter 16

10HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.2 16.2 소켓소켓

소켓 구조

Page 11: Chapter 16

11HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.2 16.2 소켓소켓

인터넷 소켓 주소 구조

Page 12: Chapter 16

12HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.2 16.2 소켓소켓

소켓 구조계열 (Family) IPv4, IPv6, UNIX 도메인 프로토콜과

같은 그룹정으유형 (Type) Stream Socket, DataGram Socket, Raw

Socket프로토콜 (Protocol) TCP, UDP 의 경우 0로컬 소켓 주소 sockaddr_in 의 구조체로 이루어진

로컬 소켓주소원격지 소켓 주소 sockaddr_in 의 구조체로

이루어진 원격지 소켓 주소

Page 13: Chapter 16

13HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.2 16.2 소켓소켓

소켓 유형

Page 14: Chapter 16

14HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.2 16.2 소켓소켓

소켓 유형스트림 소켓 (Stream Socket)

TCP 와 같은 연결지향 프로토콜을 사용데이터 그램 소켓 (Datagram Socket)

UDP 와 같은 비연결성 프로토콜을 사용미 소켓 (Raw Socket)

ICMP 또는 OSPF 와 같이 직접 IP 서비스를 이용하는 프로토콜

Page 15: Chapter 16

15HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

BYTE ORDERING

16.316.3

Page 16: Chapter 16

16HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.3 16.3 바이트 순서화바이트 순서화

Big-endian 바이트 순서

Page 17: Chapter 16

17HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.3 16.3 바이트 순서화바이트 순서화

Little-endian 바이트 순서

Page 18: Chapter 16

18HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.3 16.3 바이트 순서화바이트 순서화

The byte order for the TCP/IPThe byte order for the TCP/IPprotocol suite is big endian.protocol suite is big endian.

Page 19: Chapter 16

19HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.3 16.3 바이트 순서화바이트 순서화

바이트 - 순서 변환응용프로그램에서 이식성을 용이하게 하기 위하

여 , TCP/IP 소프트웨어는 호스트 바이트 순서 (big-endian 또는 little-endian) 으로 이루어진 정수를 네트워크 바이트 순서 (big-endian) 으로 변환하는 기능을 제공한다 .

Page 20: Chapter 16

20HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.3 16.3 바이트 순서화바이트 순서화

바이트 - 순서 변환에 대한 선언

Page 21: Chapter 16

21HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.3 16.3 바이트 순서화바이트 순서화

Htons 16bit 의 정수를 호스트바이트 순서에서 네트워크 바이트 순서로 바꾼다 .

Htonl 32bit 의 정수를 호스트 바이트 순서에서 네트워크 바이트 순서로 바꾼다 .

Htohs 16bit 의 정수를 네트워크 바이트 순서에서 호스트바이트 순서로 바꾼다 .

Htonl 32bit 의 정수를 전체 네트워크 바이트 순서에서 호스트 바이트 순서로 바꾼다 .

Page 22: Chapter 16

22HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

ADDRESSTRANSFORMATION

16.416.4

Page 23: Chapter 16

23HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.4 16.4 주소 변환주소 변환

네트워크 소프트웨어는 ASCII 의 점으로 구분되는 10 진수 형태의 IP 주소를 32비트의 2 진 형태로 변환하거나 그 반대의 기능을 제공하는 함수를 제공

Page 24: Chapter 16

24HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.4 16.4 주소 변환주소 변환

주소 변한 함수 선언Inet_aton 점에 의해 분리되는 4 개의 세그먼트를

포함하는 ASCII 스트링을 네트워크 바이트 순서의 32 비트 2 진수 변환

Inet_ntoa 네트워크 바이트 순서의 32 비트의 2진수를 점으로 분리되는 4 개의 세그먼트로 이루어진 ASCII 스트링을 변환

Page 25: Chapter 16

25HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

BYTEMANIPULATION

FUNCTIONS

16.516.5

Page 26: Chapter 16

26HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.5 16.5 바이트 조정 함수바이트 조정 함수

바이트 조정 함수 선언네트워크 프로그래밍에서는 한 필드를

초기화하거나 한 필드의 내용을 다른 필드로 복사 , 두 필드 내용으 비교 기능 필요

네트워크 프로그래밍에서는 strcpy 나 strcmp 와 같은 스트링함수를 사용할 수 없음 ( 함수는 필드가 null 문자로 끝남 )

Page 27: Chapter 16

27HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.5 16.5 바이트 조정 함수바이트 조정 함수

Memset 정의된 수만큼 바이트를 특정한 값으로 설정 Example) memset(&x,0,sizeof(x)); x 라는 필드에 0 저장 첫 번째 변수는 목적지 포인터 , 두 번째 변수는 설정하고자

하는 값 , 세 번째 변수는 바이트 수 Memcpy 한 필드값을 다른 필드로 복사

Example) memcpy(&x,&y,sizeof(x));y 필드의 값을 x 필드로 복사 첫 번째 변수는 목적지 포인터 , 두 번째 변수는 발신지 포인터 ,

세 번째 변수는 복사하고자 하는 바이트 수 Memcmp 두개의 필드를 비교

Example) memcmp(&x,&y,10); x 와 y 필드의 처음 10 바이트를 비교

첫 번째 변수는 첫 번째 필드의 포인터 , 두 번째 변수는 두 번째 필드의 포인터 , 비교하고자 하는 바이트 수

Page 28: Chapter 16

28HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

INFORMATIONABOUT REMOTE

HOST

16.616.6

Page 29: Chapter 16

29HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.6 16.6 원격 호스트에 대한 정보원격 호스트에 대한 정보

Gethostbyname 선언Gethostname() – DNS 에 대한 Call호스트의 도메인 이름을 수신하고자 자원레코드

내용인 hostent 라는 구조체 정보를 리턴한다 .

Page 30: Chapter 16

30HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.6 16.6 원격 호스트에 대한 정보원격 호스트에 대한 정보

Hostent 구조

Page 31: Chapter 16

31HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.6 16.6 원격 호스트에 대한 정보원격 호스트에 대한 정보

첫 번째 필드 : 호스트 이름 두 번째 필드 : 호스트의 별칭 (alias) 을

나타내는 각 포인터에 대한 열 (array) 포인터 세 번째 필드 : 주소유형 (AF_INET) 네 번째 필드 : 주소의 길이 (IPv4 는 4 바이트 ) 마지막 필드 : 각각의 포인터가 호스트 주소중의

하나를 가리키는 포인터 열 (array) 의 포인터 (호스트가 여러 개의 주소를 가지고 있는 경우 )

Page 32: Chapter 16

32HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

SOCKET SYSTEMCALLS

16.716.7

Page 33: Chapter 16

33HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.7 16.7 소켓 시스템 콜소켓 시스템 콜

소켓 함수 선언프로세스가 소켓을 만들기 위해서 사용계열 (family), 유형 , 프로토콜 필드

Page 34: Chapter 16

34HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.7 16.7 소켓 시스템 콜소켓 시스템 콜

Bind 함수 선언미리 개설된 소켓에 로컬 소켓 주소를

추가함으로써 로컬 소켓 주소와 소켓을 결합Sockfd 소켓 기술자 , localaddr 로컬 컴퓨터의 소켓

주소에 대한 포인터 , localaddrlen 지역소켓 주소의 길이

Page 35: Chapter 16

35HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.7 16.7 소켓 시스템 콜소켓 시스템 콜

Connect 함수 선언원격지 프로세스 ( 일반적으로 서버 ) 와

능동적으로 설정하고자 하는 프로세스 ( 주로 클라이언트 ) 에 의해 사용

Sockfd socket 함수에 의해서 리턴되는 소켓 기술자 , serveraddr 원격지 소켓 주소 포인터 , serveraddrlen 그 주소의 길이

Page 36: Chapter 16

36HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.7 16.7 소켓 시스템 콜소켓 시스템 콜

Listen 함수 선언TCP server 에서만 불려진다 . 비 연결 소케승로

부터 수동 소켓을 개설운영체제에게 서버가 이 소켓을 통하여 수락할

준비가 되어있다는 것을 알림Sockfd 는 socket 함수로부터 리턴되는 소켓

기술자 , backlog 는 이 연결을 위해서 저장될 수 있는 요구의 수

성공의 경우 0, 오류의 경우 1 을 반환

Page 37: Chapter 16

37HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.7 16.7 소켓 시스템 콜소켓 시스템 콜

accept 함수 선언해당 큐로부터 첫 번째 연결 요구를 읽어들이기

위해서 TCP 서버에 의해 불려진다 .큐가 비게 되면 휴면 상태로 들어간다 .Sockfd 소켓 기술자 , clientaddr 연결을 요구한

클라이언트의 주소 포인터 , clientaddrlen 클라이언트 주소 길이에 대한 포인터

새로운 소켓 개설 , 자식 서버가 클라이언트에게 접속

Page 38: Chapter 16

38HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.7 16.7 소켓 시스템 콜소켓 시스템 콜

Sendto 함수 선언UDP 를 사용하는 프로세스가 원격지 시스템에서

시행되는 다른 프로세스에게 메시지 전송Sockfd 소켓 기술자 , buf 전송메시지 버퍼 포인터 ,

buflen 버퍼의 길이 , flag out-of-band 또는 lookahead 메시지 , toaddr 수신측 소켓 주소 포인터

Page 39: Chapter 16

39HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.7 16.7 소켓 시스템 콜소켓 시스템 콜

Recvfrom 함수 선언소켓에 도착하는 다음 메시지 추출 , 송신측의

소켓 주소 추출주로 UDP 프로세스에 의해 사용Sockfd 소켓 기술자 , buf 전송 메시지 버퍼 포인

터 , lookahead 메시지 , fromaddr 송신측 소켓 주소 포인터 , fromaddrlen 소켓 주소 길이 포인터

Page 40: Chapter 16

40HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.7 16.7 소켓 시스템 콜소켓 시스템 콜

Read 함수 선언원격지 기기에서 실행되는 다른 프로세스로부터

데이터를 수신하기 위해서 하나의 프로세스에 의해서 사용

두 기기사이의 이미 연결이 개설되어야 함Sockfd 소켓 기술자 , buf 데이터가 저장되는 버퍼

포인터 , bufflen 버퍼의 길이

Page 41: Chapter 16

41HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.7 16.7 소켓 시스템 콜소켓 시스템 콜

Write 함수 선언원격지 기기에서 실행되는 다른 프로세스로부터

데이터를 전송두 기기사이의 이미 연결이 개설되어야 함Sockfd 소켓 기술자 , buf 전송할 데이터 보관 버퍼

포인터 , buflen 버퍼의 길이

Page 42: Chapter 16

42HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.7 16.7 소켓 시스템 콜소켓 시스템 콜

Close 함수 선언소켓을 닫고 TCP 연결을 종료하기 위해 사용

Page 43: Chapter 16

43HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

CONNECTIONLESSITERATIVE

SERVER

16.816.8

Page 44: Chapter 16

44HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.8 16.8 비연결 반복 서버비연결 반복 서버

비연결 반복 서버에서의 소켓 인터페이스

Page 45: Chapter 16

45HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.8 16.8 비연결 반복 서버비연결 반복 서버

UDP 를 이용하는 서버는 비연결 반복 방식으로 동작한다 .

데이터그램 요구를 처리하는 동안 서버는 다른 데이터 그램을 전혀 처리하지 않는다 .

한 클라이언트 또는 여러 클라이언트로부터 발생하여 도착하는 데이터 그램은 큐에 저장되며 순서대로 하나씩 처리된다 .

단일 포트인 잘 알려진 포트를 이용하며 도착하는 모든 데이터그램은 서비스를 받기 위해 일렬로 기다린다 .

Page 46: Chapter 16

46HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.8 16.8 비연결 반복 서버비연결 반복 서버

서버1. 소켓 개설

• Socket call 발생 (family, 유형 , 프로토콜 전달 )

• 운영체제는 소켓 기술자 (socket descriptor) 리턴

2. 바인딩• 소켓 구조에 대한 정보를 입력하도록 bind 콜 발생• 로컬 소켓 주소 구성

3. 단계의 반복a. 수신 (receiving)

• 입력큐로부터 데이터 그램을 읽기위해 recvfrom 콜 발생

b. 전송 (sending)• 데이터그램처리후 출력큐로 결과를 포함하는 데이터그램을

전송하기 위하여 sendto 콜 발생

Page 47: Chapter 16

47HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.8 16.8 비연결 반복 서버비연결 반복 서버

클라이언트1. 소켓 개설

• 소켓 개설을 위해 socket call 발생• 운영체제는 소켓 기술자 ( socket descriptor) 리턴

2. 단계의 반복a. 전송

• 서버로 자신의 요구를 전송하기 위해 sendto 콜 발생

b. 수신• 자신의 요구에 대한 응답을 얻기 위하여 recvfrom 콜 발생

3. 종료• close

Page 48: Chapter 16

48HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

UDP CLIENT-SERVERPROGRAMS

16.916.9

Page 49: Chapter 16

49HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.9 UDP 16.9 UDP 클라이언트클라이언트 -- 서버 프로그램서버 프로그램

서버 프로그램 1-6 헤더파일 8 버퍼크기 17 소켓 개설 18 서버의 소켓 주소

초기화 19-21 서버 소켓주소 값 22 소켓 바인딩 24 버퍼 초기화 25 무한루프 시작

27 클라이언트 메시지 수신 30 데이터 처리 32 클라이언트로 결과 전송 34 버퍼의 재초기화

Page 50: Chapter 16

50HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.9 UDP 16.9 UDP 클라이언트클라이언트 -- 서버 프로그램서버 프로그램

클라이언트 프로그램 1-6 헤더파일 8 버퍼크기 18 소켓 개설 19 원격지 소켓주소

초기화 20-24 원격지 소켓주소를

위한 값을 설정 25 서버 연결 26 버퍼 초기화 30 버퍼내용을 서버 전송

33 서버로부터 응답수신 35 수신된 메시지 프린트 36 다음 반복을 위해 버퍼

재초기화 38 연결 종료

Page 51: Chapter 16

51HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

CONNECTION-ORIENTEDCONCURRENT SERVER

16.1016.10

Page 52: Chapter 16

52HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.10 16.10 연결연결 -- 지향 동시 서버지향 동시 서버

연결 - 지향 동시서버에 대한 소켓 인터페이스

Page 53: Chapter 16

53HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.10 16.10 연결연결 -- 지향 동시 서버지향 동시 서버

동시처리 가능 즉 , 서버가 여러 클라이언트를 동시에 서비스한다 .

Request 가 여러 개의 세그먼트로 도착할 수 있는 바이트 스트림으로 구성될 수 있고 , 또한 응답이 여러 개의 세그먼트를 통하여 전달될 수 있다 .

서버는 각 연결당 하나의 버퍼를 가지며 적절한 버퍼에 저장되고 서버에 의해서 동시 처리된다 .

부모 , 자식 서버 개념 이용 부모는 잘 알려진 포트를 이용하고 연결설정후 자식

서버와 임시포트를 만들고 그 자식 서버가 클라이언트를 처리하도록 한다 .

그후 부모서버는 개방되어 다른 연결을 기다린다 .

Page 54: Chapter 16

54HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.10 16.10 연결연결 -- 지향 동시 서버지향 동시 서버

하나의 잘 알려진 포트와 여러 개의 임시 포트를 이용

잘 알려진 포트로 수동개방 후 초기 연결절차 연결이 설정된 후 , 서버는 잘 알려진 포트를

비우기위해 설정된 연결에서 임시 포트 할당 데이터 전달은 클라이언트 측의 임시포트와

서버측의 임시 포트 두 개의 임시포트를 통하여 이루어진다 .

잘 알려진 포트는 다른 클라이언트 연결을 위해서 개방된다 .

Page 55: Chapter 16

55HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.10 16.10 연결연결 -- 지향 동시 서버지향 동시 서버

연결 - 지향 동시서버에 대한 소켓 인터페이스

Page 56: Chapter 16

56HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.10 16.10 연결연결 -- 지향 동시 서버지향 동시 서버

연결 - 지향 동시서버에 대한 소켓 인터페이스

Page 57: Chapter 16

57HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.10 16.10 연결연결 -- 지향 동시 서버지향 동시 서버

서버1. 소켓 개설

• Socket call 발생 ( family, 유형 , 프로토콜 전달 )2. 바인딩

• 소켓구조에 대한 정보를 입력하도록 바인드 콜 발생• 로컬 소켓 주소 구성

3. 듣기• Listen 콜을 발생하여 소켓을 수동 소켓으로 바꾼다 .

4. 단계 반복a. 수락 (accept)

• Accept 라 하는 새로운 소켓 개설 , 개설된 소켓을 다음 클라이언트와 연결한다 . 클라이언트는 새로운 소켓과 연결하며 , 이전 소켓은 비워진다 .

b. Forking• 자식 프로세서 생성 , 이 동작이후 클라이언트는 동시에 부모와

자식에 연결된다 .(listen, accept socket) 을 가진다 .

Page 58: Chapter 16

58HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.10 16.10 연결연결 -- 지향 동시 서버지향 동시 서버

서버c. Accept 닫기

• 부모 프로세서는 accept 소켓을 닥기 위해 close 콜 발생• Listen 소켓은 개방 유지 ( 다음 클라이언트를 위해 )

d. Listen 소켓 닫기• 자식 프로세서는 자신의 listen 소켓을 닫기 위해 close 콜 발생• Accept 소켓은 개방을 유지

e. 반복1) 읽기 – 입력버퍼로부터 한번 처리능력만큼 read 콜2) 처리 – 데이터 처리3) 쓰기 – 출력버퍼로 처리 결과를 쓰기 위해 write 콜 발생

f. 통신 소켓 닫기• Close 콜

Page 59: Chapter 16

59HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.10 16.10 연결연결 -- 지향 동시 서버지향 동시 서버

클라이언트1. 소켓 개설

• 소켓 개설을 위해 socket call 발생• 운영체제는 소켓 기술자 (socket descriptor) 리턴

2. 연결• Connect 콜을 발생하여 운영체제가 개설된 소켓 구조에 서버의

소켓 주소를 넣도록 한다3. 단계의 반복

a. 쓰기• Write 콜을 발생시켜 출력 TCP 버퍼로 데이터 기록

b. 읽기• 입력 버퍼로부터 데이터를 얻기 위해 read 콜을 발생

4. 종료• Close 콜

Page 60: Chapter 16

60HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.10 16.10 연결연결 -- 지향 동시 서버지향 동시 서버

클라이언트와 서버

Page 61: Chapter 16

61HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.10 16.10 연결연결 -- 지향 동시 서버지향 동시 서버

클라이언트와 서버

Page 62: Chapter 16

62HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.10 16.10 연결연결 -- 지향 동시 서버지향 동시 서버

서버 프로그램 1-6 헤더파일 8 버퍼크기 18 수동소켓 개설 23 수동소켓과 서버

소켓주소 결합 (binding) 24 수동소켓으로 부터

Listen 소켓 개설 28 accept 소켓 개설 30 fork 를 이용 자식

프로세스 만듦 33 부모 프로세스의

accept 소켓 닫는다 .

33 부모 프로세스의 accept 소켓 다는다 .

38 자식 프로세스의 listen 소켓을 닫는다 .

40 루프내에서 자식프로세스가 루프내의 accept 소켓으로부터 read 함수 수행

42 읽은 데이터 처리 44 자식 프로세스가

accept 소켓으로 결과 기록

47 accept 소켓 닫는다 .

Page 63: Chapter 16

63HANNAM UNIVERSITYHttp://netwk.hannam.ac.kr

16.10 16.10 연결연결 -- 지향 동시 서버지향 동시 서버

클라이언트 프로그램 1-6 헤더파일 8 버퍼크기 17 능동 소켓 개설 21 원격지 서버에 대한

정보를 받아 hostent 구조체 변수에 정보 보관

22-23 hostent 구조체 내의 소켓주소를 원격지소켓주소 구조체에 복사

24 개설된 소켓을 서버에 연결

25 데이터 수신 버퍼저장 27 버퍼의 내용을 능동

소켓에 기록 29 능동소켓을 이용

서버로부터 수신한 내용을 읽는다 .

30 수신버퍼의 내용을 프린트

33 라인은 능동 소켓을 종료