일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- grafana dashboard
- c3 축 가리기
- gcc 업데이트
- g++ 업데이트
- gcc regex
- c3 초
- semanage
- c3 축 없애기
- influxdb 설치
- c3 second
- linux시간으로 변경
- snmp
- regex_search
- 1697
- 정규식 활용
- python os
- selinux port 등록
- subporcess path
- c3 step graph
- centos pyhon 설치
- 정규식 문자열 출력
- CentOS7
- 백준
- InfluxDB
- telegraf
- python popen
- 정규식 컴파일
- python subprocess
- c++ 정규식
- snmp test
- Today
- Total
목록socket (17)
리셋 되지 말자
server.c #include #include #include #pragma comment (lib, "ws2_32.lib") void ErrorHandling(char* message); int main(int argc, char* argv[]) { WSADATA wsaData; SOCKET hServSock, hClntSock; SOCKADDR_IN servAddr, clntAddr; int szClntAddr; char message[] = "Hello World!"; if (argc != 2) { printf("Usage : %s \n", argv[0]); exit(1); } if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) ErrorHandling("WSASt..
리눅스에서는 내부적으로 소켓도 파일로 취급하기 때문에, 파일을 생성하건 소켓을 생성하건 파일 디스크립터가 반환된다.(예제 : https://not-to-be-reset.tistory.com/75?category=843290) 마찬가지로 윈도우에서도 시스템 함수의 호출을 통해서 파일을 생성할 때, '핸들(handle)'이라는 것을 반환한다. 윈도우 : 핸들 리눅스 : 디스크립터 윈도우는 리눅스와는 달리 파일 핸들과 소켓 핸들을 구분한다. SOCKET 매개변수 : 정수로 표현되는 소켓의 핸들 값 저장을 위해서 typedef 선언으로 정의 된 새로운 자료형의 이름.
socket #include SOCKET socket(int af, int type, int protocol); //성공 시 소켓 핸들, 실패 시 INVALID_SOCKET 반환 리눅스의 bind와 같은 역할 #include int bind(SOCKET s, const struct sockaddr* name, int namelen); //성공 시 0, 실패 시 SOCKET_ERROR 반환 리눅스의 listen와 같은 역할 #include int listen(SOCKET s, int backlog); //성공 시 0, 실패 시 SOCKET_ERROR 반환 리눅스의 accept와 같은 역할 #include SOCKET accept(SOCKET s, struct sockaddr* addr, int* addrl..
WSAStartup(WORD wVersionRequested, LPWSADATA ipWSAData); 윈도우 소켓에는 몇몇 버전이 존재한다. 따라서 사용할 소켓의 버전정보를 WORD혀으로 구성해서 (WORD는 typedef 선언을 통해서 unsigned short로 정의 되어 있다.) 위 함수의 첫 번째 매개변수 wVersionRequested로 전달 해야 한다. 소켓의 버전이 1.2라면, 1이 주 버전이고 2가 부 버전이므로 0x0201을 인자로 전달 해야 한다. 이렇게 상위 8비트에는 부 버전정보를, 하위 8비트에는 주 버전 정보를 표시해서 인자로 전달하게 된다. 바이트 단위로 쪼개서 버전정보를 설정하는 것이 번거로운데, 이를 위해 매크로 함수인 MAKEWORD가 제공된다. 이 함수를 사용하면 다음과..
프로젝트 속성 -> 구성속석 -> 링커 -> 입력 -> 추가종속성 클릭 후, 오른쪽에 생기는 화살표 클릭 -> ws2_32.lib 추가
파일 생성, 소켓 생성과 반환되는 파일 디스크립터의 값 비교 fd_seri.c #include #include #include #include int main(void){ int fd1, fd2, fd3; fd1=socket(PF_INET, SOCK_STREAM, 0); fd2=open("test.dat", O_CREAT|O_WRONLY|O_TRUNC); fd3=socket(PF_INET, SOCK_DGRAM, 0); printf("file descriptor 1: %d\n", fd1); printf("file descriptor 2: %d\n", fd2); printf("file descriptor 3: %d\n", fd3); close(fd1); close(fd2); close(fd3); return..
파일 write low_read.c #include #include #include #include void error_handling(char* message); int main(void){ int fd; char buf[]="Let's go!\n"; fd=open("data.txt", O_CREAT|O_WRONLY|O_TRUNC); if(fd==-1) error_handling("open() error!"); printf("file descriptor: %d \n", fd); if(write(fd, buf, sizeof(buf))==-1) error_handling("write() error!"); close(fd); return 0; } void error_handling(char *message)..
#include int socket(int domain, int type, int protocal); //성공시 파일 디스크립터, 실패시 -1 반환 int bind(int sockfd, struct sockaddr *myaddr, socklen_t addrlen); //성공시 0, 실패시 -1 반환 int listen(int sockfd, int backlog); //성공시 0, 실패시 -1 반환 int accept(int sockfd, struct sockaddr *addr, socklen_t* addrlen); //성공시 파일 디스크립터, 실패시 -1 반환 //연결 요청이 없는 상태에서 accept함수가 호출되면, 연결요청이 있을 때까지 함수는 반환하지않는다.(무한 루프가 됨) int connect(..