Python Socket编程之多线程聊天室
本文为大家分享了Python多线程聊天室,是一个Socket,两个线程,一个是服务器,一个是客户端。
最近公司培训,要写个大富翁的小程序,准备做个服务器版的,先练练手。
代码:
#coding = utf-8 import socket import threading class UdpServer(threading.Thread): def __init__(self): threading.Thread.__init__(self) self.address = ('127.0.0.1', 10000) self.s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.s.bind(self.address) self.stop_flag = False def recieve_msg(self): (data, addr) = self.s.recvfrom(2048) if data: print 'recieve data from', addr print data def run(self): while not self.stop_flag: self.recieve_msg() def stop(self): self.stop_flag = True class UdpClient(threading.Thread): def __init__(self): threading.Thread.__init__(self) self.address = ('127.0.0.1', 10001) self.s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.stop_flag = False def send_msg(self): data = raw_input() if not data: print 'Wrong inpiut' return else: self.s.sendto(data, self.address) def run(self): while not True: self.send_msg() def stop(self): self.stop_flag = True def main(): t1 = UdpServer() t2 = UdpClient() t1.start() t2.start() if __name__ == '__main__': main()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
python通过socket实现多个连接并实现ssh功能详解
一.前言 上一篇中我们已经知道了客户端通过socket来连接服务端,进行了一次数据传输,那如何实现客户端多次发生数据?而服务端接受多个客户端呢? 二.发送中文信息 在python3中,socket只能发送bytes类型的数据,bytes类型只能表示0-225的ASCII码的值,并不能表示中文,所以当我们需要发送中文时,需要使用到编码和解码. 客户端: import socket # 客户端 # 声明协议类型,同时生成socket对象 client = socket.socket() # clie
-
Python socket实现多对多全双工通信的方法
服务器:#server.py #!/usr/bin/env python #-*-coding:utf-8-*- import sys import struct#将字符串打包为二进制流进行网络传输 import select# import signal#用于捕获中断信号 import cPickle#将python对象进行序列化:dumps将python对象序列化保存为字符串,loads与之相反 from socket import * HOST = '' def send(channel,
-
python实现socket+threading处理多连接的方法
一.运行效果 先说两句,之前我在网上找的相关文章标题上写的是处理多连接,尼玛,全是假的.网上那些,根本不能异步处理多连接,不能主动给客户端发消息. 在服务端控制台输入1,查看在线人数. 给指定客户端发送消息. 二.开发思路 以下说的是服务端开发思路,客户端比较简单就不说了. 首先,需要明白的是socket的accept和recv这两个方法是阻塞线程的.这就意味着我们需要新开线程来处理这两个方法. 具体的程序流程大概是这样的: 1.新开一个线程用于接收新的连接(socket.accept()) 2
-
python多线程socket编程之多客户端接入
Python中实现socket通信的服务端比较复杂,而客户端非常简单,所以客户端基本上都是用sockct模块实现,而服务 端用有很多模块可以使用,如下: 1.客户端 #!/usr/bin/env python #coding:utf-8 ''' file:client.py date:9/9/17 3:43 PM author:lockey email:lockey@123.com desc:socket编程客户端,python3.6.2 ''' import socket,sys HOST =
-
Python用threading实现多线程详解
多线程 多线程是个提高程序运行效率的好办法,本来要顺序执行的程序现在可以并行执行,可想而知效率要提高很多.但是多线程也不是能提高所有程序的效率.程序的两个极端是'CPU 密集型'和'I/O 密集型'两种,多线程技术比较适用于后者,因为在串行结构中当你去读写磁盘或者网络通信的时候 CPU 是闲着的,毕竟网络比磁盘要慢几个数量级,磁盘比内存慢几个数量级,内存又比 CPU 慢几个数量级.多线程技术就可以同时执行,比如你的程序需要发送 N 个 http 数据包(10 秒),还需要将文件从一个位置复制到另
-
Python Socket编程之多线程聊天室
本文为大家分享了Python多线程聊天室,是一个Socket,两个线程,一个是服务器,一个是客户端. 最近公司培训,要写个大富翁的小程序,准备做个服务器版的,先练练手. 代码: #coding = utf-8 import socket import threading class UdpServer(threading.Thread): def __init__(self): threading.Thread.__init__(self) self.address = ('127.0.0.1'
-
基于Python socket实现简易网络聊天室
目录 1.socket_ui.py 服务端 1-1. 依赖引用 1-2. 实现过程 1-3. 实现效果 2.client_ui.py 客户端 2-1. 依赖引用 2-2. 实现过程 2-3. 实现效果 在这个周末刚刚写出来的python桌面应用--网络聊天室,主要通过pyqt5作为桌面应用框架,socket作为网络编程的框架,从而实现包括客户端和服务端的网络聊天室的GUI应用,希望可以一起学习.一起进步! 应用包括服务端server_ui.py.客户端client_ui.py两个python模块
-
Python网络编程基于多线程实现多用户全双工聊天功能示例
本文实例讲述了Python网络编程基于多线程实现多用户全双工聊天功能.分享给大家供大家参考,具体如下: 在前面一篇<Python网络编程使用select实现socket全双工异步通信功能>中,我们实现了1对1的异步通信,在文章结尾,给出了多对多通信的思路. 既然说了,咱就动手试一试,本次用的是多线程来实现,正好练练手- 首先讲一下思路: 我们将服务器做为中转站来处理信息,一方面与客户端互动,另一方面进行消息转发. 大体思路确定下来后,需要确定一些通信规则: 1. 客户端与服务器建立连接后,需要
-
C++基于socket UDP网络编程实现简单聊天室功能
本文实例为大家分享了C++基于socket UDP实现简单聊天室功能的具体代码,供大家参考,具体内容如下 0.通信步骤流程图 (左:服务器:右:客户端:) 1.服务器代码 1.1服务器类头文件(CServer_UDP.h) #pragma once #include <winsock2.h> class CServer_UDP { public: CServer_UDP(); void SendMsg(const char sendBuf[]); void RecMsg(); ~CServer
-
利用Python打造一个多人聊天室的示例详解
一.实验名称 建立聊天工具 二.实验目的 掌握Socket编程中流套接字的技术,实现多台电脑之间的聊天. 三.实验内容和要求 vii.掌握利用Socket进行编程的技术 viii.必须掌握多线程技术,保证双方可以同时发送 ix.建立聊天工具 x.可以和多个人同时进行聊天 xi.必须使用图形界面,显示双方的语录 四.实验环境 PC多台,操作系统Win7,win10(32位.64位) 具备软件python3.6 . 五.操作方法与实验步骤 服务端 1.调入多线程.与scoket包,用于实现多线程连接
-
Python socket编程实例详解
本文实例形式较为详细的讲述了Python socket编程.分享给大家供大家参考.具体如下: 复制代码 代码如下: sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM) 上面的代码创建了一个socket对象.type参数代表套接字类型,可为SOCK_STREAM(流套接字)和SOCK_DGRAM(数据报套接字).AF_INET表示创建的是ip v4的类型. 复制代码 代码如下: socket(address_family,type,proto
-
java基于C/S结构实现多线程聊天室
本文实例为大家分享了java基于C/S结构实现多线程聊天室的具体代码,供大家参考,具体内容如下 主要实现的功能: 服务器端建立ServerSocket阻塞监听来自客户端的Socket连接,并为之开辟一个新的线程 读取来自该连接的数据,广播每一个客户端数据,这里简单地使用一个链表保存所有来自客户端的所有Socket连接 客户端连接上服务器端后主要有两个线程在工作: 主线程:不断获取键盘的输入并写入该Socket中传输给服务器 副线程:不断从服务器Socket流中读取传来的数据,打印到屏幕上. 服务
-
python3实现多线程聊天室
使用python3创建多线程聊天室,供大家参考,具体内容如下 import threading import socket #socket udpSocket = None #计数器 num = 1 #1.创建接受,发送方法 def inMessage(): global num while True: #等待接收消息 data = udpSocket.recvfrom(1024) #4. 将接收到的数据再发送给对方 udpSocket.sendto(data[0], data[1]) #打印获
-
python实现简单多人聊天室
本文实例为大家分享了python实现多人聊天室的具体代码,供大家参考,具体内容如下 刚开始学习python,写了一个聊天室练练手. Server.py import socket,select,thread; host=socket.gethostname() port=5963 addr=(host,port) inputs=[] fd_name={} def who_in_room(w): name_list=[] for k in w: name_list.append(w[k]) ret
-
Python Socket编程详解
背景 关于Python Socket编程,首先需要了解几个计算机网络的知识,通过以下的几个问题,有助于更好的理解Socket编程的意义,以及整个框架方面的知识: TCP和UDP协议本质上的区别? TCP协议,面向连接,可靠,基于字节流的传输层通信协议:UDP协议无连接,不可靠,基于数据包的传输层协议. TCP协议在建立连接的过程需要经历三次握手,断开连接则需要经历四次挥手,而这建立连接的过程增加了传输过程中的安全性. 而建立连接的过程则会消耗系统的资源,消耗更多的时间,而相比较UDP协议传输过程
随机推荐
- PowerShell函数参数用星号隐藏的方法
- 右下角广告脚本之家出品(点击广告后出现关闭按钮可关闭)
- 用vbs将名称截断以使其最多包含 16 个字符的代码
- 详解Java中Vector和ArrayList的区别
- PHP 中提示undefined index如何解决(多种方法)
- PHP基本语法总结
- JS正则匹配中文的方法示例
- python append、extend与insert的区别
- Shell中使用plink工具实现远程批量关机
- Android编程实现的重力感应示例代码
- 完美解决在ModalPopupExtender中使用CalendarExtender时被层遮挡的问题
- Python 描述符(Descriptor)入门
- bash shell命令行选项与修传入参数处理
- python列表操作之extend和append的区别实例分析
- Python统计文件中去重后uuid个数的方法
- js正则表达式校验指定字符串的方法
- C# 8.0中的范围类型(Range Type)示例详解
- vue二级菜单导航点击选中事件的方法
- PHP如何实现阿里云短信sdk灵活应用在项目中的方法
- 对numpy.append()里的axis的用法详解