Python 简单的多线程聊天

# client 端
import socket

ip_port = (‘127.0.0.1‘, 8091)
sk = socket.socket()
sk.connect(ip_port)
print("客户端启动: ")

while True:
    inp = input(">>>")
    sk.sendall(bytes(inp, "utf8"))
    if inp == ‘exit‘:
        break
    server_response = sk.recv(1024)
    print(str(server_response, "utf8"))
sk.close()

# server 端
import socketserver

class MyServer(socketserver.BaseRequestHandler):

    def handle(self):
        print("服务器启动...")
        while True:
            conn = self.request
            print(self.client_address)
            while True:
                client_data = conn.recv(1024)
                print(str(client_data, "utf8"))
                print("waiting...")
                server_response = input(">>>")
                conn.sendall(bytes(server_response, "utf8"))
            conn.close()

if __name__ == ‘__main__‘:
    server = socketserver.ThreadingTCPServer((‘127.0.0.1‘,8091), MyServer)
    server.serve_forever()   # 这里会执行 handle 方法,所以 handle 方法里是编写程序逻辑。

创建一个socketserver 至少分以下几步

First, you must create a request handler class by subclassing the BaseRequestHandlerclass and overriding its handle() method; this method will process incoming requests.

  

Second, you must instantiate one of the server classes, passing it the server’s address and the request handler class.

Then call the handle_request() or serve_forever() method of the server object to process one or many requests.

Finally, call server_close() to close the socket.

原文地址:https://www.cnblogs.com/klvchen/p/9286625.html

时间: 2024-07-31 22:44:16

Python 简单的多线程聊天的相关文章

Python简单的多线程demo:常用写法

简单多线程实现:启动50个线程,并计算执行时间. import threading import time def run(n): time.sleep(3) print("task:",n) # 使用单线程,执行完需要6s # t1.run() # t2.run() # 使用多线程,执行完需要3s,怎么确定是3s呢?在前后加时间相减能否算出来? # t1 = threading.Thread(target=run, args=("t1",)) # t2 = thr

Python简单的多线程demo:装逼写法

用面向对象来写多线程: import threading class MyThread(threading.Thread): def __init__(self, n): super(MyThread, self).__init__() self.n = n def run(self): print("running task:",self.n) t1 = MyThread("t1") t2 = MyThread("t2") t1.start()

多任务-python实现-UDP多线程聊天(2.1.6)

目录 1.案例 @(多任务UDP聊天) 1.案例 代码实现 import threading import time import socket def rev_msg(udp_socket): while True: recv_data = udp_socket.recvfrom(1024) print("接来自%s收到的数据:%s" % (str(recv_data[1]),recv_data[0].decode("utf-8"))) def send_msg(

JAVA学习第六十课 — UDP协议 &基于多线程模拟简单的QQ聊天程序

UDP传输 UDP有发送端和接受端,有两大类,DatagramSocket.DatagramPacket 建立发送端和接收端 建立数据包 调用Socket的接收发送方法 关闭Socket 注意:发送端和接收端是两个独立的运行程序 UDP发送端演示 DatagramPacket(byte[] buf, int length, InetAddress address, int port) 构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号. public static voi

基于Python完成一个hello/hi的简单的网络聊天程序

一.Socket 套接字简介 套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开.读写和关闭等操作.套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信.网络套接字是IP地址与端口的组合. 传输层实现端到端的通信,因此,每一个传输层连接有两个端点.那么,传输层连接的端点是什么呢?不是主机,不是主机的IP地址,不是应用进程,也不是传输层的协议端口.传输层连接的端点叫做套接字(socket).根据RFC793的定义:端口号拼接到IP

【Python网络编程】多线程聊天软件程序

课程设计的时候制作的多线程聊天软件程序 基于python3.4.3 import socket import pickle import threading import tkinter import os import datetime import time try: import pymysql except: print("can't find pymysql") tcplocalport=8101 #TCP监听端口 tcpconnectport=8101 #TCP连接端口 u

java Socket多线程聊天程序(适合初学者)

一个非常简单的java聊天程序,有客户端和服务器端,目前只有群聊功能,其他的所有功能都可以在这个基础上添加,现在我分享出来主要是为了保持一个最简单的java聊天程序便于初学者学习,界面也非常的简洁,只有两个文件,主要是用了socket,java多线程,知识点不是很多,很适合初学者 下面是服务器端代码 package tk.socket; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.event.Act

(转)python多进程、多线程编程

1 概念梳理: 1.1 线程 1.1.1 什么是线程 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务.一个线程是一个execution context(执行上下文),即一个cpu执行时所需要的一串指令. 1.1.2 线程的工作方式 假设你正在读一本书,没有读完,你想休息一下,但是你想在回来时恢复到当时读的具体进度.有一个方法就是记下页数.行数与字数这三个数值,这

python中的多线程【转】

转载自: http://c4fun.cn/blog/2014/05/06/python-threading/ python中关于多线程的操作可以使用thread和threading模块来实现,其中thread模块在Py3中已经改名为_thread,不再推荐使用.而threading模块是在thread之上进行了封装,也是推荐使用的多线程模块,本文主要基于threading模块进行介绍.在某些版本中thread模块可能不存在,要使用dump_threading来代替threading模块. 线程创