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()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 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协议传输过程

随机推荐