소켓 프로그래밍
소켓 프로그래밍
- 네트워크 입/출력(통신)
- 서버 소켓 프로그래밍, 클라이언트 소켓 프로그래밍
- 포트를 지정할 때에는 1 ~ 1024번(Wellknown port)는 피하는 것이 좋다.
최대 65535번까지 사용이 가능하다.
서버 소켓 프로그래밍
1) 서버 소켓 생성
- socket.
socket
(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)
AF_INET : IPV4 AF_INET6 : IPV6 AF_UNIX : UNIX
SOCK_STREAM : TCP SOCK_DGRAM : UDP
ex) socket.socket(socket.AF_INET,socket.SOCK_STREAM) : tcp로 ipv4인 소켓을 생성
ex) socket.socket(socket.AF_INET,socket.SOCK_DGRAM) : udp로 ipv4인 소켓을 생성
2) 포트를 지정
- socket.
bind
( 주소 )
주소 안에는 튜플로 (HOST, PORT) 주소를 받습니다.
ex) socket.bind(('192.16.0.112',10000))
3) 클라이언트의 연결
- socket.
listen
( [ backlog ] )
서버가 연결을 수락하도록 하는 과정
- socket.
accept
( )
연결을 수락하겠다는 의미
소켓에 대한 정보와, 클라이언트의 ip와 port주소를 반환
- socket.
send
( 바이트 [ , 플래그 ] )
소켓에 데이터를 보내겠다라는 의미 (TCP)
- socket.
sendto
( 바이트 , 주소 )
소켓에 데이터를 보내겠다라는 의미 (UDP)
- socket.
recv
( bufsize [ , flags ] )
소켓에서 데이터를 수신하겠다는 의미 (TCP)
bufsize는 수신할 수 있는 데이터의 양을 의미합니다.
- socket.
recvfrom
( bufsize [ , flags ] )
소켓에서 데이터를 수신하겠다는 의미 (UDP)
클라이언트 소켓 프로그래밍
1) 클라이언트 소켓 생성
- socket.
socket
(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)
2) 서버에 연결
- socket.
connect
( 주소 )
소켓에 연결
주소는 마찬가지로 튜플로 (HOST,PORT)번호를 받는다.
3) 송/수신
- socket.
send
( 바이트 [ , 플래그 ] )
소켓에 데이터를 보내겠다라는 의미 (TCP)
- socket.
sendto
( 바이트 , 주소 )
소켓에 데이터를 보내겠다라는 의미 (UDP)
- socket.
recv
( bufsize [ , flags ] )
소켓에서 데이터를 수신하겠다는 의미 (TCP)
bufsize는 수신할 수 있는 데이터의 양을 의미합니다.
- socket.
recvfrom
( bufsize [ , flags ] )
소켓에서 데이터를 수신하겠다는 의미 (UDP)
기타)
encode() : string에서 byte로 변환
decode() : byte에서 string으로 변환
EX) 입력을 일로 받아오면 출력은 초로 변환하는 프로그램.
1) TCP
[ TCP Server 소스코드 ]
[ TCP Client 소스코드 ]
[ TCP Server와 Client 실행결과창 ]
[ netstat -ant ] : tcp로 연결되었다는 것을 확인해보았습니다. ( -ant : tcp, -anu : udp )
2) UDP
[ UDP Server 소스코드 ]
[ UDP Client 소스코드 ]
[ UDP Server와 Client 실행 결과창 ]
'SECURITY > Network' 카테고리의 다른 글
이더넷 소켓 프로그래밍 (0) | 2017.04.28 |
---|---|
IP 로우 소켓 프로그래밍 (0) | 2017.04.27 |
리눅스 네트워크 설정 (1) | 2017.04.27 |
TCP 로우 소켓 프로그래밍 (0) | 2017.04.26 |
UDP 로우 소켓 프로그래밍 (0) | 2017.04.25 |