TCP와 비교해 UDP는 간단함 클 라이언트에서 쏘면 서버 쪽에서 받아주는 것만 처리하면 됨 UDP는 목적지까지 가는 데 아니면 말고 잘 전달됐는지 확인할 수 없으면 ACK 같은 게 없어서 APP | 0) { printf("TX: %s\n", p_Buffer); // 송신한 데이터 출력 } // 데이터 수신 bzero(p_Buffer, BUFSIZ); nBufferLen = recvfrom(nSockFd, p_Buffer, BUFSIZ, 0, (struct sockaddr *)&stSAddr, &nSAddr_size); // 소켓으로부터 데이터 수신 if (nBufferLen > 0) { printf("Server Information: \n"); printf("Addr: %s\n", inet_ntoa(..
자료구조, 운영체제, 네트워크, 시스템설계/정보보안
저번 주 다량의 클라이언트 접근하기 위해 스레드, 포크 기법 사용해 봄 + 블록킹 해결하기 위해서 스레드 기법 사용해 봄 이번 주차는 멀티플렉스라는 방법 사용해 볼 것임 이벤트를 모니터링하고 이벤트 오면 그때 read 블록킹 해결 가능 그중 멀티플렉스에서 SELECT, poll 기법을 사용함 read.c #include #include #include #include #include int main(void) { time_t nTime; // 시간 정보를 담을 변수 char strBuffer[BUFSIZ]; // 문자열을 저장할 버퍼 int nBufferLen = 0; // 버퍼의 길이를 저장할 변수 for(int i = 0; ; i++) // 무한 루프 { memset(strBuffer, 0, BUFS..
친구와 서로의 리눅스에 접근 하는 것을 해봤음 이때 상대의 접속을 받아 들이기 위해 NC라는 프로그램을 이용했음 NET CAT nc -l 하면 서버로 돌리겠다 nc -l -p 8080 해당 포트 번호를 열고 서버를 가동시킴 우선 순위로 따지면 서버가 먼저 동작하고 있어야 하고 외부에 것을 받아들이는 역할도 하고 있어야함 SYN 가 접속을 위한 플레그임 이 접속 관련된 요청을 클라이언트가 먼저 보내고 이것을 서버가 담아두기 위한 대기큐를 생성 하고 있음 대기큐에 들어있는 것에 대하여 접속수 락하면 서비스를 제공함 이전시간에 클라이언트 구조중 socket(), connect(), close() 순으로 연결 해보는 작업을 해보았음이와 상응 되는 서버 쪽을 구현 해볼 것임 서버는 해당 3단계가 네트워크 자원들 ..
struct sockaddr_in { sa_family_t sin_family; /* 주소 체계(AF_INET) */ ipv4를 쓸건지 ipv6를 사용할건지 uint16_t sin_port; /* port 정보 : UDP 등의 포트번호*/ struct in_addr sin_addr; /* 32 비트 IP 주소정보 */ char sin_zero[8] /* 사용되지 않음 : ipv6같은경우 더 길게 사용하니 여분을 둔 것임*/ }; 리틀 엔디언(Little-Endian) 방식이라 LSB(Least Significant Bit, 최소/최하위 유효 비트) 단위로 인식을해서 바이트 단위로 끊었을때 반대로 나오게 됨 우리 컴퓨터는 현제 리틀 엔디언(Little-Endian) 방식을 채택한걸 알 수 있음 정상적으로 ..
ftime() 밀리초까지 뽑아오는 함수 밀리초 0 ~ 999 ----------------------- VI 환경에서 작업 편하게 해주는 명령어 split open 파일명 위 올라가는건 컨트롤 W 내려가는건 J y 누르면 복사 p 누르면 붙이기 ---------------------- 컴파일시 일부 중복때문에 경고 표시나옴 마이크로초 단위 현재 시간 추출 함수 : gettimeofday() 구조 보면 마이크로 초까지 기록 가능하게 되어 이음 (4바이트로 저장됨) 위에 밀리초코드는 2바이트로 저장 초단위 시간 변환 함수 : mktime() • struct tm 형태의 시각정보를 변환 • 초 단위의 UNIX 시간 정보로 변환 파일 기술자 File Descriptor라고 하고 POSIX(Potable Oper..