- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 재능이의 돈버는 일기
- StresslessLife
- K_JIN2SM
- 소소한 일상
- My Life Style & Memory a Box
- Blog's generation
- 공감 스토리
- 취객의 프로그래밍 연구실
- Love Me
- Dream Archive
- 세상에 발자취를 남기다 by kongmingu
- hanglesoul
- 카마의 IT 초행길
- 느리게.
- 미친듯이 즐겨보자..
- Joo studio
- Gonna be insane
- 악 다 날아갔어!! 갇대밋! 왓더...
- xopowo05
- 맑은공기희망운동
- 엔지니어 독립운동
- 혁준 블로그
- Simple in Complex with Simple
- 무의식이 의식을 지배한다
목록★─Programing/☆─TCP IP (20)
드럼치는 프로그래머
스트림으로부터 데이터를 읽으려고 스트림의 read 메소드를 호출했을 때 read 메소드가 어떻게 반응하는지 정확하게 알아야 합니다. 왜냐하면 read 메소드가 여러분의 예상과는 다르게 반응할 때도 있기 때문입니다. 물론 read 메소드를 호출할 때 예상과는 다르게 read 메소드가 반응한다고 해서 read 메소드의 잘못은 아닙니다. 그것은 read 메소드를 호출하는 스트림의 종류에 따라서 read 메소드의 결과가 달라질 수 있기 때문입니다. 자바에는 크게 두가지의 read()가 있습니다. 기다리는 read()와 기다리지 않는 read()로 부르는데,기다리는 read()를 느린 read() 라고도 부릅니다. 스트림이 파일등으로부터 만들어진 것 이라면 read()는 기다리지 않는 read()입니다. 반면 네..
1.소켓 연결 종료의 문제점 -파일 디스크립터를 이용한 close함수의 호출은 연결의 완전종료를 의미한다. -일방적인 방식의 완전 종료는 경우에 따라서 문제가 될수 있다. 소켓과 스트림(stream) -입력 스트림:데이터 수신을 위한 스트림 -출력 스트림:데이터 전송을 위한 스트림 우아한 소켓의 연결 종료 -스트림 half-close 기능의 함수 #include int shutdown(int s, int how); ==>성공시 0,실패시 -1 리턴 ==>s:종료하고자 하는 소켓의 파일 디스크립터를 전달 한다. ==>how: 종료 모드를 인자로 전달한다. ==>shutdown 함수의 how인자 매크로 상수값 모드 정의 0 SHUT_RD 입력 스트림 종료 1 SHUT_WR 출력 스트림 종료 2 SHUT_RD..
Iterative 서버: 클라이언트의 서비스 요구를 순서대로 처리해 주는 서버이다. request 처리시간이 짧거나 별로 문제가 되지 않는 경우에 사용한다. 이 서버는 프로그램 구현이 비교적 간단하지만 서비스를 순서대로 처리 할 때 처리 시간이 빠른 서비스가 처리 시간이 느린 서비스뒤에 올 경우 기다리는 시간이 길어 진다. 일반적으로 각 서비스의 처리 시간이 짧을 때 사용한다. concurrent 서버: 여러 요구를 동시에 서비스 할 수 있는 서버이다. 새로운 클라이언트가 접속 될 때마다 서비스를 담당할 프로세스를 새로 만드는 방법이 있으나 이 방법은 클라이언트 수가 늘어남에 따라 프로세스 수도 계속 늘어나게 된다. 그래서 실제로 많은 클라이언트를 처리 해야 할 경우에 프로세스는 하나만 이용하여 여러 서..
이 카테고리의 처음에 있는 TCP/IP 소켓 프로그래밍의 기본흐름(http://blog.naver.com/floveahn/52261183)에서는 아주 단순한 기능으로 서버프로그램이 실행되고, 클라이언트 프로그램이 실행이 되면, 클라리언트에서 연결요청을 하고 연결이되면, 서버프로그램에서 보내주는 "Hello World!!"라는 문자열을 받아서 출력해주고 있다. 여기서 서버프로그램은 클라이언트의 연결 요청을 받고, 연결 요청을 수락하고, 클라이언트로 문자열을 보내고 종료가 된다. 여기서 한단계 나아가 서버프로그램은 계속 실행이 되면서 클라이언트의 요청을 받아 들이고, 연결되는 클라이언트마다 "Hello World!!"라는 문자열을 반복적으로 보내주는 서버 프로그램을 프로그래밍 해보자. 윤성우씨 책에 나와있는..
#include #include #include #include #include #include int main(int argc, char** argv) { // char *serv_port = "8080"; char *str; struct sockaddr_in addr_ip_address; socket(PF_INET,SOCK_STREAM,0); memset(&addr_ip_address, 0, sizeof(addr_ip_address)); addr_ip_address.sin_family = AF_INET; addr_ip_address.sin_addr.s_addr = htonl(INADDR_ANY); printf("INADDR_ANY : %s\n",INADDR_ANY); str = inet_ntoa(ad..
1.TCP/UDP에 대한 이해 TCP/IP 프로토콜 스택 2.LINK 계층 - 네트워크 표준과 관련된 프로토콜을 정의하는 영역 인터넷 연결 구조 3 IP 계층 - 데이터를 보내기 위해 필요로 하는 방법 IP 라이우팅 3_1 TCP와IP의 관계 1.==>IP를 기반으로 TCP가 구현 되었다면, 어떻게 연결지향 데이터 전송이 가능해 졌는가? 4.TCP/UDP 계층 - 데이터를 전송하는 방법을 정의 -TCP : 신뢰성 있는 데이터 전송 프로토콜 5.Application 계층 1.-소켓을 이용한 프로그램의 구현을 의미한다. 2. 2.-일반적으로 소켓 프로그래밍이라고 하면 Application 계층의 프로토콜을 정의하고 구현하는 것을 말한다. 3.--"Hello World” 서버 / 클라이언트도 Applicati..
IP 주소체계라는것은 여러가지가 있다 그중 대표적인것이 IPv4,IPv6이다 IPv4는 4자리의 Dotted Decimal Notation 으로 흔히들 루프백주소를 예를 들면 127.0.0.1 처럼 32비트의 정수로 표현한다. IPv6은 그보다 더많은 자리수를 지원할것이라고 생각하지만 정확하게 어떤구조로 되어있느지는 모르겠다 아직까지 IPv4로 사용하고 차후 IPv6로 넘어갈것이라고 하니 이것도안 알아두여야될 부분인것이다. 우선 아래표는 IPv4와 IPv6를 비교한표이다. 일단 IPv4에서도 안에 내부적으로 어떻게 활용되어지는 확인해봐야된다. 위의 테이블을 보면 Class A,Class B,Class C라는것이 있는데 이건 번호에따른 명칭이다. 주소체계에서 맨앞자리숫자를 기준으로해서 구분지어줄수있다 0~..
1. 소켓이란 무엇인가? 소켓은 한 시스템이나 네트워크 상에서 통신을 가능케 해주는 통신 인터페이스이다. 소켓은 버클리 유닉스 버전에 의해 소개되었다. 소켓을 사용하면 운영체제의 종류에 관계 없이 서버/클라이언트 환경을 구축할수있다. 2. 소켓 사용하기 소켓을 사용하기 위해서는 소켓 어드레스 정보가 담긴 구조체를 사용해야 한다. 로컬 시스템에서 사용하기위한 소켓은 sys/un.h 에 정의된 sockaddr_un 을 사용해야 한다. struct sockaddr_un sa_family_t sun_family; /* 소켓 도메인(AF_UNIX) */ char sun_path[]; /* 어드레스 파일 경로 */ ; 네트워크에서 사용하기 위한 소켓은 netinet/in.h 의 sockaddr_in 을 사용한다. ..
Echo (에코) 프로그램 Client (리눅스) /* 헤더파일 선언 */ #include #include #include #include #include #include #include #define BUFSIZE 1024 // 메시지를 저장할 크기를 정의. void error_handling(char *message); // error_handling 함수 프로토타입 선언. /* main 함수 */ int main(int argc, char **argv) // ip주소와 port정보를 인자로 받음. { int sock; // 소켓생성 디스크립터를 저장할 변수. char message[BUFSIZE]; // 메시지를 저장할 배열선언. int str_len; // 수신받은 데이터의 크기를 저장할 변수선언..
Echo (에코) 프로그램 Server (리눅스) /* 헤더파일 선언 */ #include #include #include #include #include #include #include #define BUFSIZE 1024 // 메시지를 저장할 크기를 정의 void error_handling(char *message); // error_handling 함수 프로토타입 선언. /* main 함수 */ int main(int argc, char **argv) // port정보를 인자로 받음. { int serv_sock; // server 디스크립터를 저장할 변수선언. int clnt_sock; // client 디스크립터를 저장할 변수선언. char message[BUFSIZE]; // 메시지를 저장할 ..