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

#Python#
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务