티스토리 뷰
udp_client /server
- 문자 메세지 같은 서비스와 비슷 (SMS/MMS)
- 데이터 전송
- 연결하는 과정이 없음 --> 불안정하다
- 간결하고 빠르다
- 빠르고 간편하게 사용가능
- 소규모 통신에 적합
1) UDP_cleint
>>udp_client.py
>>recvfrom와 sendto는 동기화 해야함 --> 동시에 사용할 수 없음
- recvfrom //block function (sendto가 먼저 사용 될 경우 )
- sendto
//socket모듈에 정리 되어있음(python.org)
>>sendto의 원형
socket.sendto(bytes, address)
(보낼 데이터의 타입, 주소)
>>sendto에 정의
address의 형태
(host,port) -> ('192.168.4.100',1000)
address --> 한쌍의 튜플 형태
! listen() 과 accept()이 없음
connect() 없음 --> 정확히 나와 통신이 되었다고 말할 수 없다 (다른사용자와 구분 X)
** tcp 의경우
sendto (bytes,address) --> send()
recvfrom() --> recv()
-->IPv4의 버전 #ifconfig 의 inet addr이 아이피 형태
host : 네트워크에서의 식별 번호
port : 서비스의 식별 번호 #netstat -anu (port번호 확인할때 )
-- > 상대방 서버의 포트 번호를 나타내는 것
# vi udp_client.py
import socket
import sys
if len(sys.argv) < 3:
print("usage: udp_client.py <ip> <port>")
sys.exit()
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
ip=sys.argv[1]
port = int(sys.argv[2])
print(ip,port)
sock.sendto(b'hello',(ip,port))
~
2. UDP_ server
>> udp_server.py
- 소켓이 2개 이상 필요로 한다
- 서버 자신의 소켓 1개
- 클라이언트에 대한 소켓 1개 이상
- 서버 소켓 생성
- bind
-->bind에 들어가는 address 는 UDP에 들어가는 address형태와 동일
server_sock = socket.socket( socket.AF_INET, socket.SOCK_DGRAM )
-->서버가 소켓을 만드는데 UDP용 소켓을 만드는 것
#serever_sock.bind(address) #서버가 사용할 포트번호 지정
server_sock.bind( (host, port) ) //서버가 사용할 포트번호 지정
server_sock.listen(10) //사용자가 최대 10명이라는 의미
server_sock.accept() //클라이언트의 연결 요청이 있을 떄 까지 대기
# vi udp_server.py
import socket
server_sock= socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
server_sock.bind(('192.168.219.180',10000))
data= server_sock.recvfrom(65535)
print(data)
>>통신
'Network Security > Network' 카테고리의 다른 글
Layer 3/IPv4 (0) | 2017.12.14 |
---|---|
Layer 4/UDP 헤더 분석 (Low Socket) (0) | 2017.12.14 |
TCP socket Programming (0) | 2017.12.12 |
01. 네트워크(Network)-소켓 (socket) (0) | 2017.12.11 |
Network(Linux )시스템 구축 (0) | 2017.12.08 |