---
title: udp聊天室
date: 2018-09-27 21:32:41
tags: udp聊天室
---
#服务器程序
import socket
import select
import sys,os
"""接收普通聊天消息"""
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
PORT = 9527
s.bind(("127.0.0.1",PORT))
#os.system('python3 myserver2.py %s'%PORT)
enrc = "^^^^"
addrlist = []
namelist = []
wilfgamename = [[]] #[[1,2,3,4,5,6,7,8,9,10],[a,b,c,d,e,f,g,h,i,j]]
wilfgameaddr = [[]]
# data = "welcome %s to join us"
gamecount = 0 #游戏桌数量,默认从0开始
playerNO = 12
while True:
# print(addrlist)
# print(namelist)
#recvfrom接收UDP消息,参数是每次接收消息的大小,返回接收到的内容
print('waiting for recv')
data,address = s.recvfrom(1024).decode()
print(data)
if '加入狼人杀' in data:
name = data.decode().split(enrc)[0]
wilfgamename[gamecount].append(name)
wilfgameaddr[gamecount].append(address)
if len(wilfgamename[gamecount]) >= playerNO:
addrall = ''
for x in wilfgameaddr[gamecount]:
addrall += x[1] #取端口号
addrall += '!!' #4653!!4653!!4655!!
PORT += 1
for x in wilfgameaddr[gamecount]:
s.sendto('begin wolf kill!!!!%s'%PORT,x)
os.system('python3 myserver2.py %s %s %s'%(PORT,'``'.join(wilfgamename[gamecount]),addrall))
gamecount += 1
wilfgamename.append(list())
wilfgameaddr.append(list())
elif '取消狼人杀' in data:
name = data.decode().split(enrc)[0]
wilfgamename[gamecount].remove(name)
wilfgameaddr[gamecount].remove(address)
# s.sendto(data,address)
# s.sendto(b'server recv your msg',address)
if enrc in data.decode():
name = data.decode().split(enrc)[0]
# print("name:",name)
if data.decode().endswith("quit"):
addrlist.remove(address)
namelist.remove(name)
for i in range(len(addrlist)):
s.sendto((name+" quit").encode(),addrlist[i])
else:
if address in addrlist:
pass
else:
addrlist.append(address)
namelist.append(name)
for x in addrlist:
s.sendto(data,x)
time.sleep(1)
for x in addrlist:
s.sendto(data,x)
s.close()
#客户端程序
from multiprocessing import Process,Queue
from tkinter import Frame,Text,END,Scrollbar
import socket
import os
import time
from tkinter import *
import tkinter.messagebox
import random
import threading
from multiprocessing import Process,Queue
from tkinter import scrolledtext
name = sys.argv[1]
q = Queue()
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
class GuiPart():
def __init__(self,master,queue,endCommand,enrc='^^^^',HOST = "127.0.0.1",PORT = 9527):
self.queue=queue
self.enrc = enrc
self.HOST = HOST
self.PORT = PORT
self.playstatus = True
self.var = StringVar()
self.var.set('停止')
self.wolfstatus = True
self.wolf =
udp 聊天室
最新推荐文章于 2023-09-14 23:56:24 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)