计算机技术杂类一起玩python程序员

聊天工具简单实现(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()))
上一篇下一篇

猜你喜欢

热点阅读