안녕하세요.신랑 각시의 신랑 입니다. 이번에는 IPv6 Server 와 IPv4 와 IPv6 를 동시 지원하는 Client 를 가지고 Test 를 해 보겠습니다. 준비물은, 이전에 설명한 컴파일된 Server 역할 바이너리와 Client 역할 바이너리 입니다. 테스트 목록Server 프로세스를 띄운다.Client 프로세스를 IPv6 를 사용한 Client 프로세스를 Server 프로세스와 연결한다.IPv4 를 사용한 Client 프로세스를 Server 프로세스와 연결한다. 테스트 1) 테스트 2) Client 로그여기서 중요한 것은, 서버의 IPv6 주소를 넣을 때, Interface 정보도 넣어야 합니다. 아래와 같이 % 로 Interface 명을 구분하였습니다.(예제 에서는, eth0 이 Interf..
안녕하세요. 신랑 각시의 신랑 입니다. 이번에는 IPv6 관련한 Socket Client 를 작성해 보겠습니다. 이번 목적은 주어진 IP 가 IPv4 표현이든, IPv6 표현이든 모두 수용 가능한 Client 만드는 것이 목적입니다. socket 을 만들 때, getaddrinfo() 함수를 호출하여 적절한 struct addrinfo 값을 얻어오고, 해당 구조체를 가지고 connect() 을 한다. 라고 요약할 수 있겠습니다. 이전 포스팅으로 적어 둔 echo server 와 통신할 client 입니다. #include #include #include #include #include #include #include std::string GetPeerInfo(struct sockaddr * _addr, ..
안녕하세요. 신랑 각시의 신랑입니다. 일하면서, IPv4 와 IPv6 Client 를 연결 요청을 모두 받아야 하는 Server 가 필요했는데요, IPv6 용 Server 를 만들어 두면 모두 수용 가능합니다. 배경 적인 내용은 검색하시거나 책을 찾아보시면 좋을 것 같구요. 제 블로그에서는 IPv6 용 Server 소스만 적어볼까 합니다. 아래는 소스 전체와 컴파일 Line 입니다. #include #include #include #include #include #include #include std::string GetPeerInfo(struct sockaddr * _addr, socklen_t _addrlen) { char hostname[256]; char svcname[64]; if(getname..
안녕하세요. 신랑 각시의 신랑입니다. 오늘은 일 하면서, 간만에 Endian 변환이 필요한 경우가 생겼습니다. Endian 이란, 컴퓨터에서 기본 타입 ( primitive time ) 을 다룰 때 byte 순서를 말합니다. 예를 들어, 4 byte integer 형을 다룰 때 Big endian 을 사용하는 컴퓨터는 바이트 순서를 좌측부터 계산합니다. (좌측이 큰 값이 됩니다.) 1을 표현하면, 0x00000001 으로 표현됩니다. Little endian 을 사용하는 컴퓨터는 바이트 순서를 우측부터 계산합니다. (우측이 큰 값이 됩니다.) 1을 표현하면, 0x01000000 으로 표현됩니다. 예전에 다루던 시스템 (HP_UX) 같은 경우에 Big endian 이여서 char 배열에 int 형을 그대로..
안녕하세요.신랑 각시의 신랑 입니다. 오늘은 일하다가, 계속 반복해서 특정 파일을 sftp 로 복사하다가 지쳐서 one command 로 파일을 옮기도록 했습니다. 처음에는 몇 번만 반복하면 될 것 같아서 수 작업을 했는데요, 몇 번이 점점 많아져서 one command 로 정리하게 되었습니다. 상황)서버 1 ( linux 서버 ) 에서 서버 2 ( linux 서버 ) 로 파일을 복사해야 했습니다.서버 1 에서 서버 2로 sftp 로 접속한다. ( ID / PW 입력 )서버 2의 특정 위치로 이동한다. ( cd 명령 입력 )put 명령으로 파일 업데이트exit 명령으로 sftp 종료 계속 반복되다 보니까, 이것도 일이여서 힘들었습니다. 제안) 1. 서버1 에서 서버2 로 로그인 ( ID / PW 입력 )..
안녕하세요. 신랑각시의 신랑 입니다. 일하면서, 이진 값 배열 (binary stream) 을 printable string 으로 변환해야 할 일이 생겼습니다. 이런 경우에는 BCD 을 하여, 값을 변환하여 처리하곤 합니다. 예를 들면, 0x93, 0x17, 0x52, 0xF4 라는 이진 배열 ( 4 byte ) 이 있을 때, 이 값을 printable string 으로 변환하기 위하여 BCD encoding 을 하면, 0x39, 0x33, 0x31, 0x37, 0x35, 0x32, 0x46, 0x34 로 변환됩니다. 각각의 값은 ascii 표를 통하여 보면, 931752F4 로 print 됩니다. 4 bit 값 ( max 0xF ) 을 8 bit 로 표현하다 보니까, 길이가 2배로 늘어납니다. 그럼 C..
안녕하세요.신랑 각시의 신랑 입니다. 일하다가 필요해서 만든 소스코드 (source code) 1탄 - 포트 포워딩 (port forwarding) 입니다. 상황 - 1 저는 Toad 나 HideSQL 과 같은 DB Client tool 을 이용하여 DB 서버에 연결을 해야 합니다. 그런데, Site 의 방화벽 정책으로 인하여, 제 PC 에서 DB 서버를 direct 로 연결할 수 없었습니다. 터미널 프로그램으로 Gateway 가 되는 서버에 접속한 후에, 다시 DB 서버로 접속할 수 있었습니다. ( mysql, isqlplus 으로 접속 )Client Tool 없이 DB 작업은 너무 불편했습니다. 상황 - 2 저는 PC 에서 RESTful API 를 테스트 하려고, API Server 가 떠 있는 서버..
안녕하세요. 신랑 각시의 신랑 입니다. 저장된 데이터 중에서, 특정 값을 검색하는 데에는 여러 방법이 있을 수 있습니다. 그 중, for loop 으로 나올때까지 비교해서 찾거나, 혹은 STL 에서 제공하는 std::map 으로 find() 하는 것이 대표적인 방법일 것 입니다. 일하면서 문득 궁금했습니다. 데이터가 얼마나 많아야 std::map 이 for loop 보다 빠를까요? 산술적으로 평가할 수는 없습니다. 가독성을 생각한다면 for loop 보다는 STL 을 사용하는 편이 좋으니까요. 하지만, 성능이 신경쓰이는 프로그램을 만들 때에도 너무 고민없이 STL 을 사용하는 것은 아닐까 싶어서 테스트 해 봤습니다. 결과) 약, 100개 이하의 데이터에서는 for loop 이 빠른 것 같습니다. 주로 6..
안녕하세요. 신랑각시의 신랑 입니다. 일하면서 간혹 파일이 존재하는 디렉토리를 삭제해야 하는 경우가 생깁니다. 아래 주석 부분은, man page 를 참조하여 callback 함수의 parameter 별 의미를 확인하고자 적어 놓은 것 입니다. 실제 사용에서는 삭제해도 무방할 듯 합니다. (저는 항상 잊어 버리기 때문에 그냥 주석 처리 상태로 올립니다. ) #include #include #include #include #include #include #include #include int main(int argc, char * argv[]) { if(argc != 2) { std::cout
- Total
- Today
- Yesterday
- short code
- ftp 자동접속 스크립트
- std:map
- ftp 스크립트
- socket program
- endian
- c++
- endian 변환
- FTW
- forwarding
- 8 byte 엔디안 변환
- remove
- IPv6 socket
- 엔디안
- IPv6 server
- ssh key 만들기
- IPv6 echo server
- sftp 자동접속
- IPv6 client
- 서버 경유
- ftp 자동접속
- 8byte endian 변환
- IPv6
- ipv6 socket program
- IPv6 IPv4 Dual client
- ssh key
- 엔디안 변환
- client socket
- IPv4 and IPv6
- BCD 변환
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |