tobby48 před 4 roky
rodič
revize
d610185977

+ 18
- 0
src/kr/co/swh/lecture/network/tcp/tcpclient.py Zobrazit soubor

@@ -0,0 +1,18 @@
1
+# socket module import!
2
+import socket
3
+
4
+# 소켓 객체를 생성합니다. 
5
+# 주소 체계(address family)로 IPv4, 소켓 타입으로 TCP 사용합니다.
6
+client_socket  = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
7
+client_socket .connect(("localhost", 9999))
8
+
9
+# send msg
10
+msg = "안녕하세요"
11
+client_socket.send(msg.encode())
12
+
13
+# 메시지를 수신
14
+data = client_socket .recv(1024)
15
+
16
+print(data.decode())
17
+# connection close
18
+client_socket .close()

+ 40
- 0
src/kr/co/swh/lecture/network/tcp/tcpserver.py Zobrazit soubor

@@ -0,0 +1,40 @@
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_STREAM)
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
+# 서버가 클라이언트의 접속을 허용
15
+server_socket.listen()
16
+
17
+# accept 함수에서 대기하다가 클라이언트가 접속하면 새로운 소켓을 리턴
18
+client_socket, addr = server_socket.accept()
19
+
20
+# 접속한 클라이언트의 주소입니다.
21
+print('Connected by', addr)
22
+
23
+# recv and send loop
24
+while True:
25
+    
26
+    # 클라이언트가 보낸 메시지를 수신하기 위해 대기
27
+    data = client_socket.recv(1024)
28
+    
29
+    # 빈 문자열을 수신하면 루프를 중지
30
+    if not data: 
31
+        break
32
+    
33
+    # 수신받은 문자열을 출력
34
+    print(data.decode())
35
+    
36
+    # echo
37
+    client_socket.send(data)
38
+
39
+client_socket.close()
40
+server_socket.close()