socket的简单例子

时间:2023-01-18 20:52:38

最近刚刚开始学了socket的模块,就写了一个服务器与客户端交互的程序

有两种模式:

1.就是先电脑自动回复

2.就是人工服务

接下来就是代码了

服务器端的代码:

 import socket
server=socket.socket()
server.bind(('localhost',9999))
print('--------服务器已启动--------')
server.listen()
duihua={'你好':'你也好','你是谁':'我是 Arthur,我哥叫浩南哥','谁最帅':'当然是我浩南哥'}#可以在这里写一些常用回答
while True:
print('-----------正在连接用户-----------')
conn,addr=server.accept()
print('--------------已连接用户-------------')
print('new conn',addr)
while True:
date=conn.recv(1024).decode()
if not date:
print('用户已断开')
break
elif date in duihua:#自动回答用户问题
conn.send(duihua[date].encode('utf-8'))
if date=='人工服务':#自己亲自回答用户问题
print('---进入人工服务---')
conn.send('现在已为你连接人工服务'.encode('utf-8'))
while True:
date1=conn.recv(1024).decode()
if date1=='退出':
conn.send('已断开人工服务'.encode('utf-8'))
print('---已断开人工服务---')
break
print('用户问题:',date1)
date2=input('回复:')
conn.send(date2.encode('utf-8'))
else:
conn.send('我不知道你在说什么,你可用人工服务来解决的需要'.encode('utf-8'))
server.close()

客户端的代码:

 import socket
client=socket.socket()
client.connect(('localhost',9999))
while True:
say=input('你:').strip()
if len(say)==0:continue
elif say=='F':
client.close()
break
else:
client.send(say.encode('utf-8'))
date=client.recv(1024)
print('Arthur:',date.decode())

随意批评指点