★ Windows 기반의 이해윈도우 기반 OOB(Out of band) 데이터 송 수신1. 윈도우 기반에서는 Signal 핸들링 이라는 개념이 존재하지 않는다.2. Select 함수는 소켓을 통해서 예외 상황(OOB 데이터 수신)이 발생 하였는지 확인 하는 것이 가능하다.( Send )#include <stdio.h>#include <stdlib.h>#include <winsock2.h>#define BUFSIZE 30void ErrorHandling(char *message);int main(int argc, char **argv){WSADATA wsaData;SOCKET hSocket;SOCKADDR_IN recvAddr;if(argc!=3){printf("Usage : %s <IP> <port>n", argv[0]);exit(0);}if(WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) /* Load Winsock 2.2 DLL */ErrorHandling("WSAStartup() error!");hSocket=socket(PF_INET, SOCK_STREAM, 0);if(hSocket==INVALID_SOCKET )ErrorHandling("socket() error");
★ Multicast1. 전송 방식.- UDP를 기반으로 하는 전송 방식.- 멀티캐스트 그룹을 기반으로 멀티캐스트 패킷을 주고 받음.- 하나의 멀티캐스트 패킷은 라우터를 통해서 다수의 호스트에 전송.2.라우팅(Routing)과 TTL(Time To Live)- 라우터에 의해서 패킷이 경로를 찾는 과정을 라우팅이라 한다.- Multicast 패킷 내에는 TTL 정보가 포함된다. TTL은 거쳐 갈 수 있는 라우터의 수를 의미한다. ( 즉, Hop Count ? ㅋ )3. 멀티캐스트 Sender와 Receiver- Sender : 임의의 멀티 캐스트 그룹에 데이터를 전송하는 Host- Receiver : 임의의 멀티 캐스트 그룹으로부터 데이터를 수신하는 Host4. 멀티 캐스트 Sender 와 Receiver의 구현1. UDP 소켓 생성2. TTL 설정(소켓 옵션 설정).3. 멀티캐스트 그룹으로 데이터 전송1. UDP 소켓 생성.2. 멀티캐스트 그룹 지정(ip_mreq 구조체)3. 멀티캐스트 그룹 가입(소켓 옵션 설정.)
★ 표준 입출력 함수의 장점1. 이식성(Portability)이 좋아진다.- 모든 시스템은 ANSI 표준 C를 지원.2. 효율성을 높일 수 있다.- 표준 입출력 함수에 의한 버퍼를 제공 받는다.- 소켓 생성시 제공되는 버퍼는 프로토콜의 완성을 위한 것이다.- 표준 입출력 함수 사용 시 제공되는 버퍼는 성능 향상을 위한 것이다.1. 파일 포인터- 표준 입출력 함수 호출을 위해서는 파일 포인터가 있어야 한다.- FILE 구조체의 포인터2. 파일 디스크립터를 이용한 시스템 입출력- 시스템 입출력 함수 사용 시 필요하다.3. 결론- 소켓을 기반으로 표준 입출력 함수 사용을 위해서는 파일 디스크립터를 기반으로 파일 포인터를 생성해야 한다. 파일 디스크립터 -> 파일 포인터#include <stdio.h>FILE* fdopen(int files, const char *mode);FileFile 생성 -> File Descriptor Return -> fdopen 호출 하면, file 포인터 생성. ! !
vec[0].iov_base=MSG1; //저장할 배열vec[0].iov_len=9; // 저장할 내용의 길이.vec[1].iov_base=MSG2;vec[1].iov_len=9;str_len=readv(0, vec, 2);printf("n총 %d 바이트 입력n", str_len);printf("첫 번째 메시지 : %s n", MSG1);printf("두 번째 메시지 : %s n", MSG2);return 0;}만약, Nagle Algorizm 이 Off 되어 있을 경우1. (Write 함수를 3번 호출하는 경우) Nagle Algorizm 이 Off 되어 있으므로, 총3개의 패킷이 생성 되게 된다 ( 각, 헤더 정보를 가지고 있으므로 )즉, 패킷이 많아지게 되어서, 데이터 젂송량이 폭증하게 된다.2. (Writev 함수를 호출하는 경우) Nagle Algorizm 이 Off 되어 있다고 하더라고, 각 데이터 들이 뭉쳐서, 1개의 패킷으로 생성되어 젂송 되게 되어 진다.즉, Nagle Algorizm 이 Off 되더라도, 네트워크의 효율적인 면을 따지 더라도, Writev 함수가 훨씬 효율적이게 된다.