作者:小K
来源:麦叔编程
“
今天教大家写个聊天室功能,该程序只有几十行代码,这比动辄几百兆的通讯软件包来说简直就是“神纯净版本”。而且关闭解释环境之后是不会留下任何信息痕迹的,所以可以放心使用。
需要用到TCP/IP协议,Socket技术。
import socket
host = socket.gethostname() #获取主机地址
port = 8888 #设置端口号
nick_name = "麦叔"
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host, port)) # 绑定地址
s.listen(1) # 设置最多连接数量
sock, addr = s.accept() # 被动接收TCP客户端连接
print('Connected')
info = sock.recv(1024).decode() # 接收Client数据
while 'Quit' not in info:
if info:
print(info)
send_data = input('输入发送内容:')
send_data = nick_name + ": " + send_data
sock.send(send_data.encode()) # 发送TCP数据包
if 'Quit' in send_data:
break
info = sock.recv(1024).decode() # 接收Client数据
sock.close() # 关闭客户端Socket
s.close() # 关闭服务端Socket
主机端代码分为三部分,
第一部分:构建主机的HOST和PORT...创建监听任务;
第二部分:接收\发送 数据;
第三部分:当输入“Quit”之后,断开连接,程序结束(影响客户端)。
import socket
s = socket.socket() # 创建TCP/IP套接字
host = socket.gethostname() # 获取主机地址
port = 8888
nick_name = "小K"
s.connect((host, port)) # 初始化TCP服务器连接
print('Client Connected')
info = ''
while 'Quit' not in info:
send_data = input('输入发送的内容:')
send_data = nick_name + ": " + send_data
s.send(send_data.encode()) # 发送TCP数据
if 'Quit' in send_data:
break
info = s.recv(1024).decode() #接收服务端数据
print(info)
s.close() # 关闭Socket连接
主机端代码分也为三部分,
第一部分:构建HOST和PORT信息,并与主机端创建连接;
第二部分:接收\发送 数据;
第三部分:当输入“Quit”之后,断开连接,程序结束(不影响主机端)。
使用两个命令行终端,分别运行两个代码文件;
聊天功能;
体验非常好!
上文的两段代码只是实现了最简单的聊天功能,如果想做的更像一个聊天室,可以在上面的代码中对其进行深度开发。
最后可能会开发出一个QQ一样的程序~
CDA数据分析师分享案例,欢迎大家留言分享你的建议。
留言与评论(共有 0 条评论) “” |