본문 바로가기
반응형

TCP/IP/윈도우기반14

쓰레드동기화 1.쓰레드 동기화 기법 (1)쓰레드 동기화 기법의 분류 프로세스 실행의 두 가지 모드 -유저모드와 커널모드가 존재한다.이렇게 모드를 나눈 이유는 시스템의 안정성을 보장하기 위해서 이다. 유저모드 -일반적인 프로그램의 실행모드다. -시스템리소스접근이 허용되지 않는다. -유저모드 동기화 기법 : CRITICAL_SECTION오브젝트를 사용한다. 커널모드 -시스템 리소스를 접근을 위한 프로세스의 실행모드, -커널 오브젝트를 통한 시스템 리소스로의 접근시 유저모드에서 커널모드로의 변환이 발생한다. -커널 모드 동기화 기법 : Event , Semaphore , Mutex커널 오브젝트를 사용한다. -리소스접근이 허용되긴 하지만 운영체제에 의해서 접근이 되는 것이다.운영체제에 의해서 리소스를 안정적으로 운영할 수 .. 2009. 10. 8.
비동기 Notification입출력모델 1.동기와 비동기의 이해 (1)동기화와 비동기화 동기화된 입력 및 출력 함수의 호출 Application계층과 TCP계층 간의 완료를 의미한다. 데이터 전송시작------------------(Application계층에서의 데이터 전송종료) send함수 호출 send함수리턴 데이터수신시작------------------------데이터수신종료 recv함수 호출 recv함수 리턴 A------------------------------------B 데이터 전송종료 라는 의미: Application계층에서 Send함수 호출하면 보내고자하는 데이터가 TCP계층에 존재하는 출력버퍼로 완전히 전송된 상태 ,이 상태에서 send함수가 리턴된다. 데이터수신종료 : TCP계층에 존재하는 입력버퍼에서 Applicatio.. 2009. 10. 8.
Completion Port 입출력 모델 보호되어 있는 글 입니다. 2009. 10. 8.
IOCP 보호되어 있는 글 입니다. 2009. 10. 8.
TCP 파일 전송 클라이언트 <윈도우 기반> #include #include #include #include #pragma comment(lib, "ws2_32.lib") #define BUFSIZE 1024 void eh(char* meg); int main(int argc, char *argv[]) { WSADATA wd; SOCKET hs; FILE* fp; SOCKADDR_IN sadd; int strl; char meg[BUFSIZE]; if(argc!=3) { printf("Usage : %s \n",argv[0]); exit(1); } fp=fopen("e_clnt.c","r"); //파일 읽기 if(fp==NULL) eh("File open error"); if(WSAStartup(MAKEWORD(2,2),&wd)!=0) eh("WS.. 2009. 7. 1.
TCP 파일 수신 서버<윈도우 기반> #include #include #include #include #include // 시간구조체 가져오기 #pragma comment(lib, "ws2_32.lib") #define BUFSIZE 1024 void eh(char* meg); int main(int argc, char *argv[]) { WSADATA wd; SOCKET hss; SOCKET hcs; SOCKADDR_IN sadd; SOCKADDR_IN cadd; FILE* fp;// 파일 포인터 int scadd;// 클라이언트 주소크기변수 int strl;//입력버프 크기 char meg[BUFSIZE]; char* str;// 클라이언트 주소저장 포인터 time_t logint;// 시간형 변수 선언 struct tm* t;// 시간.. 2009. 7. 1.
TCP 파일 수신 클라이언트<윈도우기반> #include #include #include #include #pragma comment(lib,"ws2_32.lib") #define BUFSIZE 30 void ErrorHandling(char *message); int main(int argc,char **argv) { WSADATA wsaData; SOCKET hSocket; char buf[BUFSIZE]; FILE* fp; SOCKADDR_IN servAddr; int len; if (argc!=3) { printf("Usage : %s \n", argv[0]); exit(1); } fp = fopen("receive.dat", "w"); // 파일 생성 if (fp == NULL) ErrorHandling("File open error".. 2009. 7. 1.
TCP 파일 전송 서버 <윈도우기반> #include #include #include #include #pragma comment(lib,"ws2_32.lib") #define BUFSIZE 30 void ErrorHandling(char *message); int main(int argc,char **argv) { WSADATA wsaData; SOCKET hServSock; SOCKET hClntSock; char buf[BUFSIZE]; FILE* fp; SOCKADDR_IN servAddr; SOCKADDR_IN clntAddr; int clntAddrSize; int len; if (argc!=2) { printf("Usage : %s \n", argv[0]); exit(1); } /*접속해 오는 클라이언트에게 전송해줄 파일 오픈 .. 2009. 7. 1.
Daytime service UDP 클라이언트<윈도우기반> #include #include #include #include #include #pragma comment(lib,"ws2_32.lib") #define BUFSIZE 30 void ErrorHandling(char *message); int main(int argc, char **argv) { WSADATA wsaData; SOCKET hSocket; char message[BUFSIZE]; int strLen,addrSize,i; SOCKADDR_IN servAddr; SOCKADDR_IN fromAddr; time_t timer = time(NULL); struct tm* t = localtime(&timer); if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0) Error.. 2009. 6. 30.
Daytime service UDP 서버 <윈도우기반> #include #include #include #include #include #pragma comment(lib,"ws2_32.lib") #define BUFSIZE 30 void ErrorHandling(char *message); int main(int argc, char **argv) { WSADATA wsaData; SOCKET hServSock; char message[BUFSIZE]; int strLen,num=0; time_t timer; struct tm *t; SOCKADDR_IN servAddr; SOCKADDR_IN clntAddr; int clntAddrSize; if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0) ErrorHandling("WSAStart.. 2009. 6. 30.
UDP 경계 에코 클라이언트 <윈도우기반> #include #include #include #include #pragma comment(lib,"ws2_32.lib") #define BUFSIZE 30 void ErrorHandling(char *message); int main(int argc, char **argv) { WSADATA wsaData; SOCKET hSocket; char message[30]; int strLen,i; char MSG1[]="Good "; char MSG2[]="Evening "; char MSG3[]="Everybody! "; SOCKADDR_IN servAddr; if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0) ErrorHandling("WSAStartup() error!"); h.. 2009. 6. 30.
UDP 경계 에코 서버<윈도우기반> #include #include #include #include #pragma comment(lib,"ws2_32.lib") #define BUFSIZE 30 void ErrorHandling(char *message); int main(int argc, char **argv) { WSADATA wsaData; SOCKET hServSock; char message[BUFSIZE]; int strLen,num=0; SOCKADDR_IN servAddr; SOCKADDR_IN clntAddr; int clntAddrSize; if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0) ErrorHandling("WSAStartup() error!"); hServSock=socket(PF_IN.. 2009. 6. 30.
UDP connect 함수 기반의 에코 클라이언트<윈도우 기반> #include #include #include #include #pragma comment(lib,"ws2_32.lib") #define BUFSIZE 30 void ErrorHandling(char *message); int main(int argc, char **argv) { WSADATA wsaData; SOCKET hSocket; char message[BUFSIZE]; int strLen; SOCKADDR_IN servAddr; if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0) ErrorHandling("WSAStartup() error!"); hSocket=socket(PF_INET,SOCK_STREAM,0); if(hSocket ==INVALID_SOCKET) Er.. 2009. 6. 30.
UDP 에코 서버<윈도우 기반> #include #include #include #include #pragma comment(lib,"ws2_32.lib") #define BUFSIZE 30 void ErrorHandling(char *message); int main(int argc,char **argv) { WSADATA wsaData; SOCKET hServSock; char message[BUFSIZE]; int strLen; SOCKADDR_IN servAddr; SOCKADDR_IN clntAddr; int clntAddrSize; if (argc!=2) { printf("Usage : %s \n", argv[0]); exit(1); } if (WSAStartup(MAKEWORD(2, 2),&wsaData) !=0) Erro.. 2009. 6. 30.
반응형