Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 백준
- centos pyhon 설치
- gcc 업데이트
- selinux port 등록
- python os
- snmp
- c3 축 가리기
- linux시간으로 변경
- grafana dashboard
- c3 축 없애기
- InfluxDB
- python popen
- c++ 정규식
- regex_search
- influxdb 설치
- c3 second
- gcc regex
- semanage
- python subprocess
- c3 step graph
- g++ 업데이트
- subporcess path
- telegraf
- 정규식 문자열 출력
- 정규식 활용
- CentOS7
- snmp test
- 1697
- c3 초
- 정규식 컴파일
Archives
- Today
- Total
리셋 되지 말자
[window] 윈도우 기반 소켓관련 함수 및 예제 본문
socket
#include<winsock2.h>
SOCKET socket(int af, int type, int protocol);
//성공 시 소켓 핸들, 실패 시 INVALID_SOCKET 반환
리눅스의 bind와 같은 역할
#include<winsock2.h>
int bind(SOCKET s, const struct sockaddr* name, int namelen);
//성공 시 0, 실패 시 SOCKET_ERROR 반환
리눅스의 listen와 같은 역할
#include<winsock2.h>
int listen(SOCKET s, int backlog);
//성공 시 0, 실패 시 SOCKET_ERROR 반환
리눅스의 accept와 같은 역할
#include<winsock2.h>
SOCKET accept(SOCKET s, struct sockaddr* addr, int* addrlen);
//성공 시 소켓 핸들, 실패 시 INVALID_SOCKET 반환
리눅스의 connect와 같은 역할
#include<winsock2.h>
int connect(SOCKET s, const struct sockaddr* name, int namelen);
//성공 시 0, 실패 시 SOCKET_ERROR 반환
리눅스의 close(리눅스에서는 소켓이던 파일이던 close로 동일하지만, 윈도우에서는 소켓을 닫을 때 호출하는 함수가 별도로 마련되어 있음)
#include<winsock2.h>
int closesocket(SOCKET s);
//성공 시 0, 실패 시 SOCKET_ERROR 반환
리눅스에서의 write 함수 역할을 수행함. 리눅스는 소켓도 파일로 간주하기 때문에 파일 입출력함수인 read write를 이용해서 데이터를 송수신 할 수 있었지만 윈도우는 다르다.
리눅스의 write함수와이 차이점은 마지막 매개변수인 flags 가 있냐 없느냐의 차이다
#include<winsock2.h>
int send(SOCKET s, const char* buf, int len, int flags);
//성공 시 전송된 바이트 수, 실패 시 SOCKET_ERROR 반환
// s : 데이터 전송 대상과의 연결을 의미하는 소켓의 핸들 값 전달
// buf : 전송할 데이터를 저장하고 있는 버퍼의 주소 값 전달
// len : 전송할 바이트 수 전달
// flags : 데이터 전송 시 적용할 다양한 옵션 정보 전달. 0이면 아무런 옵션을 설정 안한다
리눅스의 write함수의 역할을 한다.
#include<winsock2.h>
int recv(SOCKET s, const char* buf, int len, int flags);
//성공 시 수신한 바이트 수(단 EOF 전송시 0), 실패 시 SOCKET_ERROR 반환
// s : 데이터 수신 대상과의 연결을 의미하는 소켓의 핸들 값 전달
// buf : 수신된 데이터를 저장할 버퍼의 주소 값 전달
// len : 수신할 수 있는 최대 바이트 수 전달
// flags : 데이터 수신 시 적용할 다양한 옵션 정보 전달
※ 리눅스에도 send, recv함수가 따로 존재한다. 즉, 리눅스의 read, write 함수가 윈도우의 send, recv 함수에 대응한다고 생각하면 안된다. 역할만 같을 뿐임을 상기해야 한다.
---여기까지 2020 - 4 - 6 학습 (Chapter 1 끝)
'socket' 카테고리의 다른 글
윈도우 기반 서버, 클라이언트 예제 작성(동작함) (0) | 2020.04.03 |
---|---|
윈도우의 파일핸들, 소켓핸들과 리눅스의 파일 디스크립터 (0) | 2020.04.03 |
[windows] WORD, LPWSADATA (0) | 2020.04.03 |
[window] socket 종속성 추가(visual studio) (0) | 2020.04.03 |
파일 디스크립터와 소켓 (0) | 2020.04.03 |
Comments