lixiangyv 发表于 2020-3-7 10:23:47

使用Python做一个聊天室

使用 Socket 做的一个聊天室,分为客户端和服务端。

废话不多说,直接上代码:
客户端( Client.py ):
import socket
import threading as td

outString = ''
inString = ''

def client_send(client):
    global outString
    while True:
      string = '%s : %s' % (nick, input())
      client.send(string.encode('utf-8'))

def client_accept(client):
    global inString
    while True:
      try:
            inString = client.recv(1024)
            if not inString:
                break
            if outString != inString:
                print(outString)

      except:
            break


nick = input('请输入你的昵称:')
ip = input('请输入您的 IP:')
port= 8888

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((ip, port))
client.send(nick.encode('utf-8'))


td.Thread(target=client_send, args=(client, )).start()

td.Thread(target=client_accept, args=(client, )).start()



服务端( Server.py ):
import socket
import threading as td

people = 0

# 接受
def clientIn(conn, nick):
    global data, people

    while True:
      try:
            temp = conn.recv(1024)
            if not temp:
                conn.close()
                return
            NotifyAll(temp)
            print(data.decode('utf-8'))
      except:
            NotifyAll(nick.decode('utf-8') + '断开连接!')
            people -= 1
            print(data)
            return

def NotifyAll(ss):
    global data

    if con.acquire():
      data = ss
      con.release()

con = td.Condition()
host = input('请输入服务器的IP地址:')
port = 8888
data = ''

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind((host, port))
server.listen(1)

print('服务器已创建')
   


while True:
    conn, addr = server.accept()
    nick = conn.recv(1024)
    NotifyAll('欢迎' + nick.decode('utf-8') + ' 到聊天群!')
    people += 1
    print(data)
    print('当前房间有' + str(people) + '人')

    conn.send(data.encode('utf-8'))

    td.Thread(target=clientIn, args=(conn, nick)).start()


演示:

hjc757 发表于 2020-3-15 02:36:10

为什么客户之间不能聊天?服务器上有所有客户端消息,客户端之间没有消息

lixiangyv 发表于 2020-3-15 08:07:36

hjc757 发表于 2020-3-15 02:36
为什么客户之间不能聊天?服务器上有所有客户端消息,客户端之间没有消息

正在改进中...
页: [1]
查看完整版本: 使用Python做一个聊天室