说明:需先运行服务端,再运行客户端

要实现多个客户端同时进行可在控制台中运行多个客户端程序

代码分享 

socket服务端

import socket
import threading
#存入用户和连接名的字典
mydict=dict()
#创建列表存入连接值
mylist=list()
#把聊天信息发送给除自己之外的所有人
def sendsum(fileno,message):for conn in mylist:try:if conn.fileno()!=fileno:conn.send(message.encode())except:pass
#保持客户端与服务器端的持续连接
def run(conn_server,fileno):username=conn_server.recv(1024).decode()print(username)mydict[fileno]=username#存入连接套接字mylist.append(conn_server)#向除自己之外的其他人发送信息sendsum(conn_server.fileno(),'系统提示* '+username+'已经进入系统,快和他聊天吧!')while True:try:client_message=conn_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_server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
socket_server.bind(('localhost',4002))
socket_server.listen(128)
print('监听开始了!')
while True:conn_server,ip_address=socket_server.accept()print(conn_server)if conn_server.recv(1024).decode()=='1':conn_server.send('*connection is successsful!!!*\n * welcome to chat *'.encode())threadsum=threading.Thread(target=run,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:myMassage=input('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_client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#连接服务器socket
socket_client.connect(('localhost',4002))
socket_client.send(b'1')
#接受服务器的连接状态
data=socket_client.recv(1024).decode()
print(data)
#用户登录
username=input('请输入用户名:')
socket_client.send(username.encode())#创建子线程,用来收发信息
sendThread=threading.Thread(target=sendProcess,args=(socket_client,))
acceptThread=threading.Thread(target=acceptProcess,args=(socket_client,))
threads=[sendThread,acceptThread]
for i in threads:i.setDaemon(True)i.start()
i.join()

socket编程实现多人聊天室相关推荐

  1. 基于socket编程的多人聊天室

    效果图:      server.c 1 /* 服务器端 server.c */ 2 #include <glib.h> 3 #include <stdio.h> 4 #inc ...

  2. java 多人聊天_java编程实现多人聊天室功能

    导读热词 本文实例为大家分享了java实现多人聊天室的具体代码,供大家参考,具体内容如下 程序源代码及运行截图: server.java //server.java package Socket; i ...

  3. python实现简易聊天需要登录博客园zip下载_Python基于Socket实现简易多人聊天室的示例代码...

    前言 套接字(Sockets)是双向通信信道的端点. 套接字可以在一个进程内,在同一机器上的进程之间,或者在不同主机的进程之间进行通信,主机可以是任何一台有连接互联网的机器. 套接字可以通过多种不同的 ...

  4. node php聊天室,利用socket.io实现多人聊天室(基于Nodejs)

    利用socket.io实现多人聊天室(基于Nodejs) socket.io简介 在Html5中存在着这样的一个新特性,引入了websocket,关于websocket的内部实现原理可以看这篇文章,这 ...

  5. Java Socket实现简易多人聊天室传输聊天内容或文件

    Java Socket实现简易多人聊天室传输聊天内容或文件 Java小练手项目:用Java Socket实现多人聊天室,聊天室功能包括传输聊天内容或者文件.相比于其它的聊天室,增加了传输文件的功能供参 ...

  6. linux网络编程TCP多人聊天室

    用socket实现一个多人聊天室的思路很简单,即在服务器端定义一个fd的int型数组,用来存储已经连接的客户端的socket连接套接字fd(因为发送和接收数据都只需要借助连接套接字fd),当服务器接收 ...

  7. 基于socket实现的多人聊天室项目(python)

    最近做了一个多人聊天室项目,主要目的是练习和巩固socket编程. 在开始之前,可以先了解一下socket的TCP三次握手和四次挥手. 参考:https://blog.csdn.net/luoyoub ...

  8. python多人聊天室_Python基于Socket实现简易多人聊天室

    前言 套接字(Sockets)是双向通信信道的端点. 套接字可以在一个进程内,在同一机器上的进程之间,或者在不同主机的进程之间进行通信,主机可以是任何一台有连接互联网的机器. 套接字可以通过多种不同的 ...

  9. 网络编程项目—— 多人聊天室->双人聊天

    一.Coding前的思考和步骤梳理 1. 又开始思考这个问题,拿到一个需求,是调用java底层的代码写1000行实现,还是直接调第三方库写50行实现? 都一样. 发现第一次写shell的时候其实思考过 ...

最新文章

  1. python【力扣LeetCode算法题库】219 -存在重复元素 II
  2. 使用OpenGL一年后
  3. [YTU]_2476(E3 继承了,成员函数却不可访问)
  4. PAT甲级1075 PAT Judge:[C++题解]排序、结构体
  5. java 冒泡排序_Java冒泡排序详解
  6. 加深认识与理解ADO.NET
  7. WPF Page close
  8. 为什么判断list的时候,既要判断不等于null有要判断size大于0
  9. 雷林鹏分享:MySQL DELETE 语句
  10. 如何对Windows 2000中出现的“Stop 0x0000007B”错误信息进行故障诊断
  11. 黑苹果安装各种问题解决办法
  12. 戴尔G3游戏本蓝屏现象频繁解决方案(最新篇)
  13. 看雪题库REVERSE的马到成功
  14. arduino交通信号灯
  15. springboot瘦身打包
  16. 一款好用的文本编辑器KindEditor+PHP
  17. 4.4.5 信道均衡(一)
  18. C语言樱花树代码来喽~
  19. Google Play Game Services
  20. 户外4G低功耗太阳能监控球机摄像头

热门文章

  1. 软考真的没用了吗?到底要不要考?
  2. FFmpeg命令详解
  3. aircrack-ng渗透WPA加密
  4. ADS1.2在Win10下的安装过程和初步使用
  5. linux qt rsa加密解密,使用Qt实现一个简化版的RSA加密算法
  6. VB6.0 ActiveX 控件开发详解 [第一章:创建工程]
  7. 怎么从转移特性曲线上看dibl_《半导体器件物理》第3章_2亚阈值斜率(36页)-原创力文档...
  8. HigherHRNet预训练模型——网盘下载
  9. riakcs介绍和使用
  10. html5QQ浏览器页面引导模板,CSS实现QQ浏览器功能