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 |
|---|