这个项目的代码还存在很多问题,下面列举了三个,以后再慢慢对这个进行完善
客户端启动之前需要保证服务端已经启动了~必须等到对方发送完信息之后才能再回复必须要将服务端的防火墙给关闭功能仅限于聊天总共有两个代码,这个不同于之前的那个项目,这个项目实现了,客户端和服务双方的交互(半双工聊天)
代码我已经自己用了,可以使用,大家有兴趣可以拿去学习~
服务端代码:必须要先运行器服务端的代码,然后,还要将服务端的防火墙关闭了才能接受到其他电脑的通过外网的交互!!
from socket import *from time import ctimeHOST = gethostbyname(gethostname())POST = 21567BUFSIZ = 1024ADDR = (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:breakprint('[%s] : %s' % (ctime(), data.decode()))Meg = input('> ')tcpCliSock.send(Meg.encode())if not Meg:break
下面是客户端代码,记得要修改下那个HOST,改成服务端的IP地址就好了~
from socket import *from time import ctimeHOST = '自己写个IP地址(服务端,那个需要把防火墙关掉的电脑的IP地址)'POST = 21567BUFSIZ = 1024ADDR = (HOST, POST)tcpCliSock = socket(AF_INET, SOCK_STREAM)tcpCliSock.connect(ADDR)while True:data = input('> ')if not data:breaktcpCliSock.send(data.encode())data = tcpCliSock.recv(BUFSIZ)if not data:breakprint('[%s]: %s' % (ctime(), data.decode()))