聊天工具简单实现(python 半双工聊天)
2018-02-27 本文已影响76人
肥宅_Sean
转自我的CSDN博客~
这个项目的代码还存在很多问题,下面列举了三个,以后再慢慢对这个进行完善
- 客户端启动之前需要保证服务端已经启动了~
- 必须等到对方发送完信息之后才能再回复
- 必须要将服务端的防火墙给关闭
- 功能仅限于聊天
总共有两个代码,这个不同于之前的那个项目,这个项目实现了,客户端和服务双方的交互(半双工聊天)
代码我已经自己用过了。可以使用。大家有兴趣可以拿去学习~
服务端代码:必须要先运行器服务端的代码,然后,还要将服务端的防火墙关闭了才能接受到其他电脑的通过外网的交互!!
from socket import *
from time import ctime
HOST = gethostbyname(gethostname())
POST = 21567
BUFSIZ = 1024
ADDR = (HOST, POST)
tcpSerSock = socket(AF_INET, SOCK_STREAM)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(5)
print("HOST is %s" % HOST)
print("Wait for connect")
tcpCliSock, addr = tcpSerSock.accept()
print('...connect from:', addr)
# 建立连接
while True:
data = tcpCliSock.recv(BUFSIZ)
if not data:
break
print('[%s] : %s' % (ctime(), data.decode()))
Meg = input('> ')
tcpCliSock.send(Meg.encode())
if not Meg:
break
下面是客户端代码,记得要修改下那个HOST,改成服务端的IP地址就好了~
from socket import *
from time import ctime
HOST = '自己写个IP地址(服务端,那个需要把防火墙关掉的电脑的IP地址)'
POST = 21567
BUFSIZ = 1024
ADDR = (HOST, POST)
tcpCliSock = socket(AF_INET, SOCK_STREAM)
tcpCliSock.connect(ADDR)
while True:
data = input('> ')
if not data:
break
tcpCliSock.send(data.encode())
data = tcpCliSock.recv(BUFSIZ)
if not data:
break
print('[%s]: %s' % (ctime(), data.decode()))