聊天室小程式服務端原始碼(客戶端接下一條)

2021-08-21 15:30:03 字數 1994 閱讀 1041

功能:類似qq群聊

1.進入聊天室需要輸入使用者名稱

2.有人進入聊天室有提示,其他人會收到提示

***進入聊天室

3.某人發訊息,則其他人都能收到

***說:***x

4.有人退出聊天室其他人會收到提示

***退出聊天室

5.管理員功能,管理員喊話聊天室所有人都能收到

# -*- coding: utf-8 -*-

from __future__ import unicode_literals

import socket

import threading

sock = socket.socket(socket.af_inet, socket.sock_stream)

sock.bind(('127.0.0.1', 8888))

sock.listen(5)

print('server', socket.gethostbyname('127.0.0.1'), 'listening...')

mydict = dict()

mylist = list()

def tellothers(exceptnum, whattosay):

for c in mylist:

if c.fileno() != exceptnum:

try:

c.send(whattosay.encode())

except:

pass

def subthreadin(myconnection, connnumber):

nickname = myconnection.recv(1024).decode()

mydict[myconnection.fileno()] = nickname

print('connection', connnumber, 'has nickname:', nickname)

while true:

try:

recvedmsg = myconnection.recv(1024).decode()

if recvedmsg:

print(mydict[connnumber], ':', recvedmsg)

tellothers(connnumber, mydict[connnumber].rstrip() + ':' + recvedmsg)

else:

mylist.remove(myconnection)

print(mydict[connnumber], 'exit,', len(mylist), 'person left')

myconnection.close()

return

except (oserror, connectionreseterror):

pass

while true:

connection, addr = sock.accept()

print('accept a new connection',

connection.getsockname(), connection.fileno())

try:

buf = connection.recv(1024).decode()

if buf == '1':

a = '首次請輸入暱稱,才可以接收訊息!!!\n'

connection.send(a.encode())

mythread = threading.thread(

target=subthreadin, args=(connection, connection.fileno()))

mythread.setdaemon(true)

mythread.start()

else:

connection.send(b'please go out')

connection.close()

except:

pass

聊天室客戶端

from socket import import os,sys 傳送訊息 def send msg s,name,addr while true text input 發言 if text quit msg q name s.sendto msg.encode addr sys.exit 退出聊天...

tcp服務端客戶端原始碼及注釋

cpp 服務端 cpp include include include using namespace std pragma comment lib,ws2 32.lib 載入函式庫windows socket int main wsadata wsadata word sockversion ma...

微信小程式 treehole,客戶端 服務端

sitemaplocation sitemap.json 本程式執行過程 先load 如果沒有賬號則需要註冊enroll,有的話直接登入login。之後在打卡廣場square,廣場顯示了所有人的打卡資訊。可以跳轉至mine頁面,我的頁面中顯示了使用者本人的打卡資訊。此時都可以選擇commit來發表自...