【有书共读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版本的可以私聊我(滑稽

