1.2socket服务器使用多线程
socket服务器代码如下
# -*- coding: utf-8 -*-
from socket import *
import time
import threading,_thread as thread myHost = '' #''说明所有IP都可以连接
myPort = 50007 #设置一个端口 socketobj = socket(AF_INET,SOCK_STREAM) #创建TCP对象
socketobj.bind((myHost,myPort)) #绑定端口
socketobj.listen(5) #允许5个请求连接 def now():
return time.ctime(time.time()) def handleClient(connection):
#time.sleep(5)
while True:
data = connection.recv(1024) #每次读取最多1024字节
if not data: break
reply = 'Echo=> %s at %s' % (data,now()) #发送数据给客户端
connection.send(reply.encode())
connection.close() def dispatcher():
while True:
connection,address = socketobj.accept() #接受数据并打印
print('Server connected by,',address,end='')
print('at',now())
#thread.start_new_thread(handleClient,(connection,)) #使用多线程
thread = threading.Thread(target=handleClient,args=(connection,)) #使用多线程
thread.start() #开始线程 dispatcher()
socket客户端代码如下
# -*- coding: utf-8 -*-
from socket import * serverHost = 'localhost'
serverPort = 50007 while True:
messages = [input('输入').encode()] #输入信息,并设置编码, 可设置b''或者str.encode() socketobj = socket(AF_INET, SOCK_STREAM) # 创建TCP对象
socketobj.connect((serverHost, serverPort)) # 连接端口 for line in messages:
socketobj.send(line)
data = socketobj.recv(1024) # 从服务器接受信息
print('Client received:', data.decode()) #打印信息,解码打印,str.decode() socketobj.close()
1.2socket服务器使用多线程的更多相关文章
- [易学易懂系列|rustlang语言|零基础|快速入门|(26)|实战3:Http服务器(多线程版本)]
[易学易懂系列|rustlang语言|零基础|快速入门|(26)|实战3:Http服务器(多线程版本)] 项目实战 实战3:Http服务器 我们今天来进一步开发我们的Http服务器,用多线程实现. 我 ...
- Linux 高性能服务器编程——多线程编程
问题聚焦: 在简单地介绍线程的基本知识之后,主要讨论三个方面的内容: 1 创建线程和结束线程: 2 读取和设置线程属性: 3 线程同步方式:POSIX信号量,互斥锁和条件变量 ...
- TCP通信 - 服务器开启多线程与read()导致服务器阻塞问题
TCP通信的文件上传案例 本地流:客户端和服务器和本地硬盘进行读写,需要使用自己创建的字节流 网络流:客户端和服务器之间读写,必须使用Socket中提供的字节流对象 客户端工作:读取本地文件,上传到服 ...
- 基于TCP协议的服务器(多线程)
import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.IOException; impo ...
- python中的socket服务器(多线程)
最近在写一个客户端和服务器的项目,使用了SocketServer模块,网上大多数都是TCP连接的例子,我在这总结一个UDP. 直接贴上代码 import threadingimport SocketS ...
- socket编程-多个客户端向服务器发送人脸照片,服务器返回识别结果(服务器使用多线程)...
recognition.py import numpy as np import face_recognition import os class recognition: def __init__( ...
- 基于事件的 NIO 多线程服务器--转载
JDK1.4 的 NIO 有效解决了原有流式 IO 存在的线程开销的问题,在 NIO 中使用多线程,主要目的已不是为了应对每个客户端请求而分配独立的服务线程,而是通过多线程充分使用用多个 CPU 的处 ...
- python多线程网络编程
背景 使用过flask框架后,我对request这个全局实例非常感兴趣.它在客户端发起请求后会保存着所有的客户端数据,例如用户上传的表单或者文件等.那么在很多客户端发起请求时,服务器是怎么去区分不同的 ...
- 服务器唯一id生成规则
在使用hashCode的时候,发现会出现相同id,虽然几率很小.虽然发现并不是hashCode的原因,而是其他逻辑的问题. 但是还是试着自己写了一个id生成器,有些id是int的,比如说任务id:有些 ...
随机推荐
- Redis入门指南之二(安装及配置)
本节主要内容 1. 前言2. redis安装3. 启动和停止Redis 1. 前言 安装Redis需要知道自己需要哪个版本,有针对性的安装,比如如果需要redis GEO这个地理集合的特性,那么red ...
- phalcon的save方法保存失败?
phalcon的save方法保存失败? 因为表中设置了一个字段:disabled, 默认值是1, 在创建数据的时候,disabled没有传值过去,导致save方法一直是false, 当返回false时 ...
- 雷林鹏分享:jQuery EasyUI 树形菜单 - 树形网格添加分页
jQuery EasyUI 树形菜单 - 树形网格添加分页 本教程展示如何向带有动态加载特性的树形网格(TreeGrid)添加分页. 创建树形网格(TreeGrid) 启用树形网格(TreeGrid) ...
- English trip V1 - B 18. Workplaces 工作地方 Teacher:Russell Key: do / does
In this lesson you will learn to talk about workplaces. 课上内容(Lesson) My English Teacher name is Russ ...
- ssh登陆被拒?(云:使用云的网页版远程登陆) 不好用。
设定的密
- flex自定义preloader预加载进度条
flex默认的preloader已经很不错了,可是有时候还是需要自定义的. 需要在要出现自定义预加载的程序的<mx:Application>标签里加入preloader="& ...
- CF1117E Decypher the String
如果我们能询问一个排列的话,我们就可以得到这个置换,然后反向求解. 但现在字符集只有26. 考虑26^3>1e5. 用一个三维坐标去映射到一个一维整数,然后就可以构造排列了. #include& ...
- js动态检测加载 JQ
var jqcdnurl = 'https://cdn.bootcss.com/jquery/3.2.1/jquery.js'; //控制台输出 function log() { for (var i ...
- 函数使用一:采购订单BAPI_PO_CREATE1
REPORT YTEST01. DATA:GS_POHEADER TYPE BAPIMEPOHEADER, GS_POHEADERX TYPE BAPIMEPOHEADERX, GT_RETURN T ...
- jQuery生成二维码 jquery.qrcode.js
https://github.com/jeromeetienne/jquery-qrcode 1.将jquery.qrcode.min.js和jquery添加到您的网页中 <script src ...