본문 바로가기

Python/통신

Python 소켓통신 (TCP / UDP)

Python에서 프로그램을 만드는데 통신이 필요해 끄적끄적 써보겠습니다. 

 

TCP는 Client와 Server가 주고 받는 것이고

UDP는 Client가 던졌고 Server가 잡았을 때 다시 던져 Client에게 주는 것입니다.

차이점은 TCP는 꼭 주고받는게 당연해야하고 UDP는 놓칠 수도 있습니다.

 

 

TCP(Server)


from socket import *

# TCP socket 설정
TCPsocket = socket(AF_INET, SOCK_STREAM) #tcp 소켓생성
TCPsocket.bind(('127.0.0.1', 4000))  #IP주소와 포트설정
TCPsocket.listen(1) # socket 클라이언트로부터 오는 신호 받을 준비
connection, addr = TCPsocket.accept() #신호 수락
data = connection.recv(1024) #데이터 크기 설정.
connection.send(data) #클라이언트에 값 전달.
connection.close() #소켓 닫기

 

TCP(Client)


from socket import *
TCP_Client = socket(AF_INET, SOCK_STREAM) #tcp 소켓생성
TCP_Client.connect(('127.0.0.1', 4000)) #서버 IP와 포트번호 접속
TCP_Client.sendall("data insert ".encode()) #보내고 싶은 데이터를 ""안에 입력 후 인코딩 후 전송 
resp = TCP_Client.recv(1024) #서버로부터 답신

print(resp.decode())

Client에서 Print문의 결과 : data insert가 나옵니다.

 

 

UDP(Server)


from socket import *

sock = socket(AF_INET, SOCK_DGRAM) #UDP 소켓생성
sock.bind(('127.0.0.1',4000))	#IP 포트번호 지정
data, addr = sock.recvfrom(200)	# 데이터 수신 대기 (크기)
sock.sendto(data,addr) #데이터를 클라이언트에게 보냄
sock.close() #소켓 닫기

UDP(Client)


from socket import *

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) #UDP 소켓생성
sock.sendto("data insert".encode(), ('127.0.0.1',4000)) #""안에 적은 데이터를 인코딩 후 ip,포트번호로 전송
data, addr = sock.recvfrom(200) #Server로 부터 받은 데이터와 주소
print(data.decode())

Clinet에서 print문의 결과 : data insert가 나옵니다.

 

※다중 접속시 TCP는 접속 실패시 오류가 뜨고 UDP는 접속 실패시 알 수 없습니다.

 

'Python > 통신' 카테고리의 다른 글

Python QThread 소켓 통신.  (0) 2019.05.22