1 Star 0 Fork 0

Andel/mySocket

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
server_.py 2.49 KB
一键复制 编辑 原始数据 按行查看 历史
Andel 提交于 2021-11-08 22:43 . new server ver1.0
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'
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/andel/mySocket.git
git@gitee.com:andel/mySocket.git
andel
mySocket
mySocket
master

搜索帮助

0d507c66 1850385 C8b1a773 1850385