Server
1 2 3 4 5 6 7 8 9 10 11 12 13 | import socket server_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) server_sock.bind(('127.0.0.1', 8080)) # UDP 통신 방식일때도, bind 과정은 필요하다. while 1 : data, addr = server_sock.recvfrom(1024) # TCP 방식이랑 다른 함수인 recvfrom 을 쓴다 + while 문 없이도, 무제한 통신이 가능하다 print('msg : ' + data.decode('utf-8')) print('addr client IP: ' + addr[0]) print('addr client port: ' + str(addr[1]) + '\n') | cs |
>> 따로 accept 하는 과정이 필요 없다
Client1
1 2 3 4 | import socket client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) client_socket.sendto("Hello! ".encode('utf-8'),('127.0.0.1',8080)) | cs |
Client2
1 2 3 4 | import socket client_socket2 = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) client_socket2.sendto('My name is Jonathan Kim!'.encode('utf-8'), ('127.0.0.1', 8080)) | cs |
# TCP 방식과 UDP 방식의 차이점
1) 필요한 문법이 UDP 가 더 적다
- TCP : (서버) bind, listen, accept, (클라이언트) connect
- UDP : (서버) bind
2) 소켓의 갯수가 UDP 가 더 적다
- TCP : (서버) server_sock, connect_sock, (클라이언트) client_sock
- UDP : (서버) server_sock, (클라이언트) client_sock
> TCP 의 경우, 처음에 listen, connect, accept 과정을 통해 연결지으려는 과정이 필요하다
-> 이 "연결짓는 과정" 만을 위해 존재하는게 connect_sock 이다
-> 또한, connect_sock 를 따로 만들어서 해당 소켓만을 이용해서 통신이 가능하다
> 반면, UDP 의 경우엔 연결짓는 과정이 아예 필요 없기 때문에 server_sock 하나로 충분하다
'네트워크' 카테고리의 다른 글
기본 tcp 연결 - 무제한으로 통신하기 (순서가 정해짐) (0) | 2019.12.26 |
---|---|
기본 tcp 연결 - 메세지 한 번만 주고받기 (0) | 2019.12.26 |
컴퓨터 네트워크 ppt 모음 - 중간범위 (0) | 2019.12.26 |
컴퓨터 네트워크 수업 ppt 모음 - 기말범위 (0) | 2019.12.26 |