Skip to content

Commit d182f6c

Browse files
author
chengxianhuan
committed
提交tcp和udp编程的代码
1 parent 1a5a04e commit d182f6c

File tree

4 files changed

+129
-0
lines changed

4 files changed

+129
-0
lines changed

day-090/tcp-client.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: utf-8 -*-
3+
"""
4+
@author: 闲欢
5+
"""
6+
7+
import socket
8+
import time
9+
10+
# 创建 socket
11+
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
12+
13+
# 建立连接
14+
s.connect(("127.0.0.1", 6000))
15+
16+
# 接收服务器消息
17+
print(s.recv(1024).decode())
18+
19+
for data in [b'Michael', b'Tracy', b'Sarah']:
20+
# 发送数据
21+
s.send(data)
22+
time.sleep(2)
23+
# 打印接收到的数据
24+
print(s.recv(1024).decode('utf-8'))
25+
time.sleep(1)
26+
27+
time.sleep(3)
28+
# 请求退出
29+
s.send(b'exit')
30+
time.sleep(2)
31+
print(s.recv(1024).decode('utf-8'))
32+
33+
# 关闭连接
34+
s.close()
35+
36+

day-090/tcp-server.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: utf-8 -*-
3+
"""
4+
@author: 闲欢
5+
"""
6+
7+
import socket
8+
import threading
9+
import time
10+
11+
12+
# 处理tcp连接
13+
def tcplink(conn, addr):
14+
print("Accept new connection from %s:%s" % addr)
15+
# 向客户端发送欢迎消息
16+
conn.send(b"Server: Welcome!\n")
17+
while True:
18+
conn.send(b"Server: What's your name?")
19+
20+
data = conn.recv(1024)
21+
# 如果客户端发送 exit 过来请求退出,结束循环
22+
if data == b"exit":
23+
conn.send(b"Server: Good bye!\n")
24+
break
25+
conn.send(b"Server: Hello %s!\n" % data)
26+
27+
time.sleep(5)
28+
# 关闭连接
29+
conn.close()
30+
print("Connection from %s:%s is closed" % addr)
31+
32+
33+
# 创建 socket
34+
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
35+
# 监听端口
36+
s.bind(("127.0.0.1", 6000))
37+
# 设定等待连接的最大数量为5
38+
s.listen(5)
39+
print("Waiting for connection...")
40+
# 等待接收连接
41+
while True:
42+
# 接受一个新连接
43+
conn, addr = s.accept()
44+
# 创建新线程来处理TCP连接
45+
t = threading.Thread(target=tcplink, args=(conn, addr))
46+
t.start()

day-091/udp-client.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: utf-8 -*-
3+
"""
4+
@author: 闲欢
5+
"""
6+
import socket
7+
8+
# 创建 socket
9+
sk = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
10+
addr = ('127.0.0.1', 6000)
11+
while True:
12+
# 等待输入
13+
msg = input('>>>')
14+
# 发送数据报
15+
sk.sendto(msg.encode('utf-8'), addr)
16+
# 接收数据报
17+
msg_recv, addr = sk.recvfrom(1024)
18+
# 打印
19+
print(msg_recv.decode('utf-8'))
20+
21+
# 关闭 socket
22+
sk.close()

day-091/udp-server.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: utf-8 -*-
3+
"""
4+
@author: 闲欢
5+
"""
6+
7+
import socket
8+
9+
# 创建 socket
10+
sk = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
11+
# 绑定 IP 和端口号
12+
sk.bind(('127.0.0.1', 6000))
13+
while True:
14+
# 接收数据报
15+
msg, addr = sk.recvfrom(1024)
16+
# 打印
17+
print('来自[%s:%s]的消息: %s' % (addr[0], addr[1], msg.decode('utf-8')))
18+
19+
# 等待输入
20+
inp = input('>>>')
21+
# 发送数据报
22+
sk.sendto(inp.encode('utf-8'), addr)
23+
24+
# 关闭 socket
25+
sk.close()

0 commit comments

Comments
 (0)