【有书共读05】《Python编程》读书笔记11
经过这将近几个月的学习,python的基础知识部分已经算是比较熟悉了。
那么接下来就是实践环节啦!
可是po主正在考试,好烦呐
只好祭出我的套接字程序
当然室友TCP和UDP两套啦
注释我已经打好了,大家自行体会!!!
TCPServer.py
#coding:utf-8 #socket server端 #获取socket构造及常量 from socket import * import datetime as dt import time def tranlate(message): n0='' n1='' n2='' n3='' for k in message: if(k.islower()): n0+=k; elif(k.isupper()): n1+=k; elif(k.isdigit()): n2+=k; else: n3+=k; s='大写字母子串:"'+n1+'",个数:'+str(len(n1))+"\n" s+='小写字母子串:"'+n0+'",个数:'+str(len(n0))+"\n" s+='数字子串:"'+n2+'",个数:'+str(len(n2))+'\n' s+='其他子串:"'+n3+'",个数:'+str(len(n3))+'\n' dd=dt.datetime.now() s+="服务器处理时间:" s+=str(dd.year)+"年"+str(dd.month)+"月"+str(dd.day)+"日"\ +str(dd.hour)+"时"+str(dd.minute)+"分"+str(dd.second)+"秒\n" return s; #''代表服务器为localhost myHost = '' #在一个非保留端口号上进行监听 myPort = 45600 #设置一个TCP socket对象 sockobj = socket(AF_INET, SOCK_STREAM) #绑定它至端口号 sockobj.bind((myHost, myPort)) #监听,允许5个连结 sockobj.listen(5) #直到进程结束时才结束循环 print("服务器已运行,等待连接......") while True: #等待下一个客户端连结 connection, address = sockobj.accept( ) #连结是一个新的socket print ('Server connected by', address) while True: #读取客户端套接字的下一行 data = connection.recv(1024) #延迟十秒 li=tranlate(data.decode('utf-8')) #x = input("请输入你要发送的消息:") #如果没有数量的话,那么跳出循环 time.sleep(10) connection.send(li.encode('utf-8')) if(data == ""): break; #当socket关闭时eof connection.close( )
TCPClient.py
#coding:utf-8 import sys from socket import * import datetime as dt serverHost = '127.0.0.1' #服务器IP地址,这里我设的是本机地址 serverPort = 45600 #进程通信的端口号,必须和服务器的端口号一样! #建立一个tcp/ip套接字对象 sockobj = socket(AF_INET, SOCK_STREAM) #连结至服务器及端口 sockobj.connect((serverHost, serverPort)) while(1): x = input("连接成功,请输入消息:") sockobj.send(x.encode('utf-8')) dd=dt.datetime.now() print('当前时间:{}年{}月{}日{}时{}分{}秒'.format(dd.year,dd.month,dd.day,dd.hour,dd.minute,dd.second)) #从服务端接收到的数据,上限为1k data = sockobj.recv(1024) dd=dt.datetime.now() print('{}年{}月{}日{}时{}分{}秒(客户机当前时间),从服务器收到\ 如下反馈信息:'.format(dd.year,dd.month,dd.day,dd.hour,dd.minute,dd.second)) li=data.decode('utf-8') print(li) if(data == ""): break; #关闭套接字 sockobj.close( )
在客户端输入一大串字符串,包括大小写字母,数字,符号
服务器会把这些按照大写字母、小写字母、数字、符号进行分类
延迟10s后,发送非客户端
注意,是延迟10s!!!
好了,不多说了,有需要的可以试一试
我要去复习(预习)备考了
555555……
对了,要UDP版本的可以私聊我(滑稽