일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프로그래머스 레벨 2
- 프로그래머스
- 백준
- 소켓
- HTTP 완벽 가이드
- 레벨 1
- 자바스크립트
- javascript
- Node.js
- 그래프
- 쉬운 문제
- socket
- 알고리즘
- TCP
- Nestjs
- 가천대
- 타입스크립트
- typescript
- Crawling
- HTTP
- type challenge
- 크롤링
- dp
- 문자열
- 수학
- ip
- BFS
- 타입 챌린지
- Algorithm
- dfs
- Today
- Total
목록window (4)
kakasoo
음, 해보다 안 것인데, server 하나에 client 여러 개를 연결할 수가 없다. 이게 아마, 프로세스와 스레드가 필요한 영역. 문제가 된 요소를 몇 개 발견했는데, client 2개가 있다고 하자, 하나는 A, 하나는 B라고 명명할 때 A를 서버에 연결했다. 이 상태로 연결이 잘 되고 있다고 할 때, B도 서버에 연결해보았다, 그런데 B는 전혀 동작하지 않는다. 이 서버는 동시성이 없기 때문이다. 그런데 B에서 메세지를 보낸다, 당연히 처리되지 않는다. A에서 서버와 연결을 종료한다, 그럼 B에서 동작해야 할 거 같지만, 앞서 B가 보낸 메세지는 씹혔다, 서버는 계속 B의 메세지를 기다리고 있는데 B는 이미 다음 단계로 넘어가서 메세지를 보낼 수가 없다. 동시성만이 이 문제를 해결할 수 있는 듯 ..
오늘은, TCP 기반의 서버를 만들어보고자 한다, 당연히 서버만 있으면 동작 여부를 모르니 클라이언트도 만든다. 복습 겸, 지금까지 소켓의 생성부터 데이터 송수신에 관한 것을 정리해보도록 하자. server측 0. WSAStartup() // 함수 요청 1. socket() // 소켓을 생성한다. 2. bind() // 소켓에 정보를 바인드한다, 즉 주소 정보를 할당한다. 3. listen() // 소켓을, 연결 요청 대기 상태로 한다. 4. accept() // 정보가 들어왔을 경우에 연결을 허용한다. 5. read() / write() // 데이터를 송수신한다. 이는 리눅스일 경우의 함수이고, 윈도우일 때에는 send()와 connect()였다. 6. close() // Socket을 close() ..
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 32 33 34 35 36 37 38 39 40 41 42 #define _WINSOCK_DEPRECATED_NO_WARNINGS // inet_addr 함수 사용을 위함, ntoa에도 필요하다. #define _CRT_SECURE_NO_WARNINGS // strcpy #include #include #include void ErrorHandling(char* message) { fputs(message, stderr); fputc('\n', stderr); exit(1); } int main(int argc, char* argv[]) { WSADATA ..
윈속(윈도우 소켓)을 기반으로 하는 프로그램을 개발하기 위해서는 다음 2가지를 선행해야 한다. 1. header file로 winsock2.h 를 포함시킨다. 2. ws2_32.lib 라이브러리를 링크시켜야 한다. 해당 내용은 설정에서, 추가 종속성의 우편에 적어주면 된다. (ws2_32.lib) 이를 통해 헤더 파일로 추가하면 윈속과 관련된 함수들을 마음대로 호출할 수 있게 된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include #include using namespace std; void ErrorHandling(const char* message) { fputs(message, stderr); // buffer 문제를 없애기 위해서 stderr를 전달 => 기본..