代码拉取完成,页面将自动刷新
import socket # #导入socket模块
import os
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # #创建服务器socket(IPv4、TCP套接字)
# # 参数一
# socket.AF_INET ipv4
# socket.AF_INET ipv6
# # 参数二
# socket.SOCK_STREAM TCP协议 (面向连接)特点:效率要求不高,但是安全可靠性高 打电话,收发文件
# socket.SOCK_DGRAM UDP协议 (面向无连接) 特点:效率要求高,内容要求不高 直播,语音
serversocket.bind(('127.0.0.1', 8000)) # #绑定到IP地址和端口号
# 元组 127.0.0.1代表本地 5000以下的接口已经被占据
serversocket.listen(1) # #开始侦听,队列长度为1
clientsocket, clientaddress = serversocket.accept() # #使用阻塞方法accept以等待客户机连接请求
# #响应请求队列 返回元组 (连接,地址)
print('Connection from ', clientaddress) # #接收客户机请求后输出客户机的信息
def getAnswer(c_data):
words = {'how are you?': 'Fine,thank you.', # 字典集
'how old are you?': '20',
'what is your name?': 'Ziyang Feng',
"what's your name?": 'Ziyang Feng',
'where do you work?': 'BJFU',
'bye': 'Bye'}
flag = 0
lst = list(words.keys())
for i in range(len(lst)):
if len(os.path.commonprefix([c_data, lst[i]])) > len(lst[i]) * 0.8:
flag = 1
return words.get(lst[i])
if flag == 0:
return "Sorry for that"
while 1: # #循环以接收和回送客户机数据
data = clientsocket.recv(1024) # #接收数据
if not data: break # #接收到空数据时,终止循环
print('Received from client: ', data.decode()) # #输出接收到的数据,repr函数转换为字符串
clientsocket.send(getAnswer(data.decode()).encode()) # #回送数据到客户机
clientsocket.close() # #关闭客户机socket
serversocket.close() # #关闭服务器socket
# os.path.commonprefix(list)
# 返回list中,所有path共有的最长的路径。
#
# 如:
# >> > os.path.commonprefix(['/home/td', '/home/td/ff', '/home/td/fff'])
# '/home/td'
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。