일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- SQL
- 인스톨
- VB.NET
- 델파이
- 초보
- 입문
- PostgreSQL
- WIN32 SDK
- 예제
- 시리얼 통신
- Firebird
- 셋업
- 파이어버드
- winsock
- 문자열
- 데이터베이스
- 소니
- c#
- SDK
- MySQL
- xml
- Visual Studio 2005
- MFC
- 파라미터
- dll
- 설치
- vb
- 기초
- Visual Basic
- Delphi
- Today
- Total
목록전체 글 (350)
프로그래밍 노트
정말 간단한 http 서버이다. 이런 것을 http 서버라 할 수 있을까정도로... 그래도 웹브라우저로 접속할 수 있으니까... #include #include int main() { WSADATA wsaData; SOCKET sockSvr; SOCKET sockSS; int nlen; struct sockaddr_in addrSockSvr; struct sockaddr_in addrSockclt; long nRet; BOOL bValid = 1; char szBuf[2048]; char szInBuf[2048]; // 윈속 초기화 if(WSAStartup(MAKEWORD(2, 0), &wsaData) != 0) { return 1; } // 소켓 만들기 sockSvr = socket(AF_INET, S..
TCP의 서버 프로그램을 종료한 바로뒤 다시 서버를 기동하면 bind에서 에러(Address aleady in use)로 끝날 때가 있다. TCP의 서버 프로그램을 종료하고 다시 기동시켰는데 왜 bind가 되지 않을까? 라고 생각하며 시간이 지난후 다시 기동시키면 문제업이 bind가 된다. 이 문제는 TCP 자체 사양에 의하여 일어나는 문제이다. 구체적으로는 TCP의 TIME_WAIT상태가 bind를 fail시킨다. 서버는 TCP 세션을 받은 상태에서 close하면 TIME_WAIT상태가 된다. 이때 주의해야되는 것은 TCP 서버의 TIME_WAIT가 발생하는 경우와 발생하지 않는 경우가 있다는 것이다. TCP서버 쪽에서 close를 먼저 실행하면 TIME_WAIT상태가 발생하지만 TCP클리아언트 쪽에서..
서버가 클라이언트의 접속을 기다리다가 클라이언트가 접속 되었을때 어느 클라이언트가 접속 했는지 알아야 할때가 있다. accept가 되어지면 accept함수의 두번째 파라미터에 상대방에 대한 정보가 저장되어진다. 예제는 accept한 상대방의 IP어드레스와 포트를 표시한다. (IP어드레스는 문제없이 가져오는데 포트를 제대로 못가져온다. -.-;;; ) (왜 이상한 포트 번호가 넘어오는지 모르겠다. -.-????? ) #include #include int main() { WSADATA wsaData; SOCKET sockSvr; SOCKET sockSS; int nlen; struct sockaddr_in addrSockSvr; struct sockaddr_in addrSockclt; // 윈속 초기화 W..
실제로 프로그램을 짤때에는 에러처리를 잘해야되는 것은 두말할 것도 없을 것같다. #include #include int main() { WSADATA wsaData; SOCKET sockSvr; SOCKET sockSS; int nlen; struct sockaddr_in addrSockSvr; struct sockaddr_in addrSockclt; long nRet; // 윈속 초기화 if(WSAStartup(MAKEWORD(2, 0), &wsaData) != 0) { return 1; } // 소켓 만들기 sockSvr = socket(AF_INET, SOCK_STREAM, 0); if(sockSvr == INVALID_SOCKET) { printf("Socket Error No : %d", WSA..
strncpy 문자열을 n문자 카피 #include char *strncpy(char *s1, const char *s2, size_t n); 문자배열 *s1에 문자열 *s2를 선두에서 n문자 카피한다. 주의) 이 때 널문자가 자동으로 추가되지 않는다. s2의 길이가 n보다 작을 경우에는 남은 문자를 "\0"로 채운다. char szTemp[20] = "AA BB CC"; printf("01234567890\n"); printf("%s \n", szTemp); // "AA BB CC" strncpy(szTemp, "aa", 2); printf("%s \n", szTemp); // "aa BB CC" strncpy(szTemp+3, "bb", 2); printf("%s \n", szTemp); // "aa..