본문으로 바로가기

소켓 프로그래밍

category SECURITY/Network 2017. 4. 24. 21:15


   소켓 프로그래밍


   소켓 프로그래밍

- 네트워크 입/출력(통신)

- 서버 소켓 프로그래밍, 클라이언트 소켓 프로그래밍

- 포트를 지정할 때에는 1 ~ 1024번(Wellknown port)는 피하는 것이 좋다.

  최대 65535번까지 사용이 가능하다.


   서버 소켓 프로그래밍

1) 서버 소켓 생성

- socket.socket(family=AF_INETtype=SOCK_STREAMproto=0fileno=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.listenbacklog )

    서버가 연결을 수락하도록 하는 과정

socket.accept)

   연결을 수락하겠다는 의미

   소켓에 대한 정보와, 클라이언트의 ip와 port주소를 반환

- socket.send바이트 [ , 플래그 )

    소켓에 데이터를 보내겠다라는 의미 (TCP)

socket.sendto바이트 , 주소 

   소켓에 데이터를 보내겠다라는 의미 (UDP)

- socket.recvbufsize [ , flags )

   소켓에서 데이터를 수신하겠다는 의미 (TCP)

   bufsize는 수신할 수 있는 데이터의 양을 의미합니다.

- socket.recvfrombufsize [ , flags 

   소켓에서 데이터를 수신하겠다는 의미 (UDP)


   클라이언트 소켓 프로그래밍

1) 클라이언트 소켓 생성

- socket.socket(family=AF_INETtype=SOCK_STREAMproto=0fileno=None)


2) 서버에 연결

- socket.connect주소 

   소켓에 연결

   주소는 마찬가지로 튜플로 (HOST,PORT)번호를 받는다.


3) 송/수신

- socket.send바이트 [ , 플래그 )

    소켓에 데이터를 보내겠다라는 의미 (TCP)

socket.sendto바이트 , 주소 

   소켓에 데이터를 보내겠다라는 의미 (UDP)

- socket.recvbufsize [ , flags )

   소켓에서 데이터를 수신하겠다는 의미 (TCP)

   bufsize는 수신할 수 있는 데이터의 양을 의미합니다.

- socket.recvfrombufsize [ , 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