python socket(tcp, udp) 사용하기
이번에는 python에서 기본으로 제공하는 socket 모듈을 사용하는 방법을 다루겠습니다.
socket 통신에는 tcp와 udp 두가지가 있습니다.
1. 먼저 tcp – sender
# socket module import! import socket # socket create and connection sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect(("123.123.123.123", 9999)) # send msg test_msg = "안녕하세요 상대방님" sock.send(test_msg) # recv data data_size = 512 data = sock.recv(data_size) # connection close sock.close()
우선 tcp는 위에 모듈을 임포트 한 뒤에 소켓 통신을 할 ip(저는 임의로 123.123.123.123)와 포트를 지정 후에
연결을 합니다.
연결이 성사 되면 test_msg를 send합니다. 그리고 send가 끝나는 동시에 data를 data_size만큼 받아오게 됩니다.
이렇게 tcp를 사용할 수 있습니다. 상황에 맞게 for루프를 돌리거나 수정해서 사용하면 됩니다.
2. tcp – receiver
import socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) recv_address = ('0.0.0.0', 9999) sock.bind(recv_address) sock.listen(1) conn, addr = s.accept() # recv and send loop while 1: data = conn.recv(BUFFER_SIZE) # 받고 data를 돌려줌. conn.send(data) conn.close()
받는 쪽 즉, 서버쪽의 tcp 소스 입니다.
3. 그리고 udp – sender
import socket # connection create send_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) dest = ("127.0.0.1", 9999) # send to dest send_sock.sendto(data, dest) send_sock.close()
위에 소스는 출발지 소켓 소스입니다.
4. udp – receiver
import socket # socket create sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # Bind the socket to the port recv_address = ('0.0.0.0', 9999) sock.bind(recv_address) data_size = 512 data, sender = sock.recvfrom(data_size) sock.close()
위 소스는 목적지 소켓 소스입니다.
끝~!
'Python' 카테고리의 다른 글
zappa를 이용한 파이썬 서버리스 구현 (0) | 2019.02.14 |
---|---|
간단한 python 이메일 연동하기 (0) | 2019.01.27 |
linux 파일 동기화 소스 auto_sync (0) | 2018.09.09 |
Python패키지 목록 requirements.txt 관리하기 (0) | 2018.08.08 |
실시간으로 뉴스를 크롤링하여 뉴스 검색엔진 API 만들기 (1) | 2018.08.07 |
linux 파일 동기화 소스 auto_sync
소개
안녕하세요 이번에는 리눅스 파일 동기화 기능을 가진 auto_sync를 소개합니다.
이 프로그램은 sftp를 이용하여 리눅스 시스템 간에 파일을 동기화 시켜줍니다.
사용 환경
우선 환경은 리눅스OS에 파이썬 3.x버전을 사용하고 paramiko라는 모듈을 설치해 주셔야 합니다.
간단히 파이썬 3버전 환경에서 paramiko만 설치해주시면 됩니다.
명령어는 pip install paramiko 입니다.
설치 및 실행
그리고 깃허브에서 프로젝트를 받아줍니다.
git clone https://github.com/buttercoconut/auto_sync.git
받은 소스에서 설정파일을 수정해줍니다.
auto_sync/config/example.conf 를 자신이 동기화 하고자 하는 서버 정보로 수정을 한 뒤에
크론탭 또는 직접 실행하여 동기화를 진행하실 수 있습니다.
수동으로 실행하는 명령어는
- python project_root/main/processor.py [conf_file_name] [task]
- ex)python auto_sync/main/processor.py example recv # example.conf의 설정 서버에서 파일을 받아옴.
task 에는 두가지가 있습니다.
recv / send
크론탭을 이용하여 일정시간마다 동기화하실 경우
우선 프로젝트 폴더 안에 run.sh 배치 파일을 생성하여 실행 스크립트를 작성합니다.
run.sh
#!/usr/bin/env bash source /home/username/anaconda/bin/activate auto_sync python /home/username/auto_sync/main/processor.py util recv python /home/username/auto_sync/main/processor.py util send python /home/username/auto_sync/main/processor.py doc recv python /home/username/auto_sync/main/processor.py doc send
이러한 식으로 하셔도 되고 맘에 드는 방법으로 수정해서 사용해도 됩니다.
crontab -e 로 크론탭 수정 모드에서
0분과 30분 마다 동기화 진행
0,30 * * * * /home/username/auto_sync/run.sh
동기화 성공 시 소스가 실행된 위치 상에 log디렉터리에 log가 생성됩니다.
'Python' 카테고리의 다른 글
간단한 python 이메일 연동하기 (0) | 2019.01.27 |
---|---|
python socket(tcp, udp) 사용하기 (0) | 2018.12.02 |
Python패키지 목록 requirements.txt 관리하기 (0) | 2018.08.08 |
실시간으로 뉴스를 크롤링하여 뉴스 검색엔진 API 만들기 (1) | 2018.08.07 |
Python sounddevice를 이용한 소리 탐지 (0) | 2018.04.23 |
Python패키지 목록 requirements.txt 관리하기
안녕하세요 이번에는 Python의 패키지 환경을 쉽게 관리할 수 있도록 도와주는
requirements.txt 을 간단하게 소개하고자 합니다.
파이썬을 쓰면서 가끔 불편한 것이 새로운 환경에 자신이 설치하고자 하는 파이썬 패키지를
일일히 구성해주는 일이 불편할텐데요.
그것을 쉽게 관리해주는 것이 바로 requirements.txt 입니다.
우선 자신이 구성한 환경을 requirements.txt 로 만드는 명령어는
pip freeze > requirements.txt
입니다.
그러면 설치되있는 패키지들이 알파벳순으로 requirements.txt 로 저장이 됩니다.
그리고 이 requirements.txt 를 반대로 지정한 환경에 설치하는 방법은
pip install -r requirements.txt
입니다.
이 명령어로 설치가 안되는 패키지도 있습니다.
다른 패키지에 대한 의존성이라든지 여러가지 요소로 설치가 안되는 패키지는 수동으로 설치를 해주시면 됩니다.
이 것으로 requirements.txt 에 대해 마치겠습니다~~
'Python' 카테고리의 다른 글
python socket(tcp, udp) 사용하기 (0) | 2018.12.02 |
---|---|
linux 파일 동기화 소스 auto_sync (0) | 2018.09.09 |
실시간으로 뉴스를 크롤링하여 뉴스 검색엔진 API 만들기 (1) | 2018.08.07 |
Python sounddevice를 이용한 소리 탐지 (0) | 2018.04.23 |
python configparser 사용하기 (0) | 2018.03.28 |