练习题
1、基于多线程实现并发的套接字通信
客户端
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# _*_ coding: utf-8 _*_
from
socket
import
*
ip_port
=
(
'127.0.0.1'
,
9999
)
client
=
socket(AF_INET,SOCK_STREAM)
client.connect(ip_port)
while
True
:
cmd
=
input
(
">>>"
).strip()
if
not
cmd:
continue
client.send(cmd.encode(
'utf-8'
))
data
=
client.recv(
1024
)
print
(data.decode(
'utf-8'
))
client.close()
|
服务端
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
import
multiprocessing
import
threading
import
socket
ip_port
=
(
'127.0.0.1'
,
9999
)
s
=
socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind(ip_port)
s.listen(
5
)
def
action(conn):
while
True
:
data
=
conn.recv(
1024
)
print
(data)
conn.send(data.upper())
if
__name__
=
=
'__main__'
:
while
True
:
conn,addr
=
s.accept()
p
=
threading.Thread(target
=
action,args
=
(conn,))
p.start()
|
2、编写一个简单的文本处理工具,具备三个任务,一个接收用户输入,一个将用户输入的内容格式化成大写,一个将格式化后的结果存入文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
# _*_ coding: utf-8 _*_
# 练习二:三个任务,一个接收用户输入,一个将用户输入的内容格式
# 化成大写,一个将格式化后的结果存入文件
from
threading
import
Thread
msg_l
=
[]
format_l
=
[]
def
talk():
while
True
:
msg
=
input
(
">>>"
).strip()
if
not
msg:
break
msg_l.append(msg)
def
format_msg():
while
True
:
if
msg_l:
res
=
msg_l.pop()
format_l.append(res.upper())
def
save():
while
True
:
if
format_l:
with
open
(
'db.txt'
,
'a'
,encoding
=
'utf-8'
) as f:
res
=
format_l.pop()
f.write(
'%s\n'
%
res)
if
__name__
=
=
'__main__'
:
t1
=
Thread(target
=
talk)
t2
=
Thread(target
=
format_msg)
t3
=
Thread(target
=
save)
t1.start()
t2.start()
t3.start()
|