网站内容更改教程,wap网站建设服务,上海韵茵网站建设,贵州高端网站建设说明#xff1a;需先运行服务端#xff0c;再运行客户端 要实现多个客户端同时进行可在控制台中运行多个客户端程序
代码分享
socket服务端
import socket
import threading
#存入用户和连接名的字典
mydictdict()
#创建列表存入连接值
mylistlist()
#把聊天信息发送给除… 说明需先运行服务端再运行客户端 要实现多个客户端同时进行可在控制台中运行多个客户端程序
代码分享
socket服务端
import socket
import threading
#存入用户和连接名的字典
mydictdict()
#创建列表存入连接值
mylistlist()
#把聊天信息发送给除自己之外的所有人
def sendsum(fileno,message):for conn in mylist:try:if conn.fileno()!fileno:conn.send(message.encode())except:pass
#保持客户端与服务器端的持续连接
def run(conn_server,fileno):usernameconn_server.recv(1024).decode()print(username)mydict[fileno]username#存入连接套接字mylist.append(conn_server)#向除自己之外的其他人发送信息sendsum(conn_server.fileno(),系统提示* username已经进入系统快和他聊天吧)while True:try:client_messageconn_server.recv(1024).decode()print(username:client_message)if client_message:sendsum(conn_server.fileno(), username say: client_message)except:#一旦其中的一个客户端关闭就关闭通信套接字并向其他用户发送提示信息sendsum(conn_server.fileno,*username已经离开聊天室*)conn_server.close()return
socket_serversocket.socket(socket.AF_INET,socket.SOCK_STREAM)
socket_server.bind((localhost,4002))
socket_server.listen(128)
print(监听开始了)
while True:conn_server,ip_addresssocket_server.accept()print(conn_server)if conn_server.recv(1024).decode()1:conn_server.send(*connection is successsful!!!*\n * welcome to chat *.encode())threadsumthreading.Thread(targetrun,args(conn_server,conn_server.fileno()))threadsum.setDaemon(True)threadsum.start()else:print(*连接失败退出程序*)conn_server.close()socket_server.close()
socket客户端 import socket
#创建套接字
import threading
def sendProcess(socket_client):while True:try:myMassageinput(me:)socket_client.send(myMassage.encode())print(发送成功)except:pass
def acceptProcess(socket_client):while True:try:print(socket_client.recv(1024).decode())except:pass
socket_clientsocket.socket(socket.AF_INET,socket.SOCK_STREAM)
#连接服务器socket
socket_client.connect((localhost,4002))
socket_client.send(b1)
#接受服务器的连接状态
datasocket_client.recv(1024).decode()
print(data)
#用户登录
usernameinput(请输入用户名:)
socket_client.send(username.encode())#创建子线程用来收发信息
sendThreadthreading.Thread(targetsendProcess,args(socket_client,))
acceptThreadthreading.Thread(targetacceptProcess,args(socket_client,))
threads[sendThread,acceptThread]
for i in threads:i.setDaemon(True)i.start()
i.join()