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

练习题

1、基于多线程实现并发的套接字通信

客户端

+ View Code
?

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

  

服务端

+ View Code
?

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、编写一个简单的文本处理工具,具备三个任务,一个接收用户输入,一个将用户输入的内容格式化成大写,一个将格式化后的结果存入文件

+ View Code
?

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

相关文章