第四模块:网络编程进阶&数据库开发 练习

练习题

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()

猜你喜欢

转载自www.cnblogs.com/anzhangjun/p/9835798.html