|
@@ -0,0 +1,28 @@
|
|
1
|
+import socket
|
|
2
|
+
|
|
3
|
+# socket.AF_INET 은 IP4v 주소체계(socket.AF_INET6 은 IP6v), socket.SOCK_STREAM은 소켓의 타입
|
|
4
|
+# socket.AF_INET와 socket.SOCK_STREAM은 디폴트 값이므로 socket.socket() 로 코드를 작성해도 된다.
|
|
5
|
+server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
|
6
|
+
|
|
7
|
+# bind 함수는 소켓을 특정 네트워크 인터페이스와 포트 번호에 연결하는데 사용
|
|
8
|
+# HOST는 hostname, ip address, 빈 문자열 ""이 될 수 있습니다.
|
|
9
|
+# 빈 문자열이면 모든 네트워크 인터페이스로부터의 접속을 허용합니다.
|
|
10
|
+# PORT는 1-65535 사이의 숫자를 사용할 수 있습니다.
|
|
11
|
+recv_address = ('', 9999) # 튜플
|
|
12
|
+server_socket.bind(recv_address)
|
|
13
|
+
|
|
14
|
+# recv and send loop
|
|
15
|
+while True:
|
|
16
|
+
|
|
17
|
+ # 서버가 클라이언트의 접속을 허용
|
|
18
|
+ data, addr = server_socket.recvfrom(1024)
|
|
19
|
+
|
|
20
|
+ # 빈 문자열을 수신하면 루프를 중지
|
|
21
|
+ if not data:
|
|
22
|
+ break
|
|
23
|
+
|
|
24
|
+ # 수신받은 문자열을 출력
|
|
25
|
+ print(addr[0], addr[1], data.decode())
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+server_socket.close()
|