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服务器使用多线程的更多相关文章

  1. [易学易懂系列|rustlang语言|零基础|快速入门|(26)|实战3:Http服务器(多线程版本)]

    [易学易懂系列|rustlang语言|零基础|快速入门|(26)|实战3:Http服务器(多线程版本)] 项目实战 实战3:Http服务器 我们今天来进一步开发我们的Http服务器,用多线程实现. 我 ...

  2. Linux 高性能服务器编程——多线程编程

    问题聚焦:     在简单地介绍线程的基本知识之后,主要讨论三个方面的内容:    1 创建线程和结束线程:    2 读取和设置线程属性:    3 线程同步方式:POSIX信号量,互斥锁和条件变量 ...

  3. TCP通信 - 服务器开启多线程与read()导致服务器阻塞问题

    TCP通信的文件上传案例 本地流:客户端和服务器和本地硬盘进行读写,需要使用自己创建的字节流 网络流:客户端和服务器之间读写,必须使用Socket中提供的字节流对象 客户端工作:读取本地文件,上传到服 ...

  4. 基于TCP协议的服务器(多线程)

    import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.IOException; impo ...

  5. python中的socket服务器(多线程)

    最近在写一个客户端和服务器的项目,使用了SocketServer模块,网上大多数都是TCP连接的例子,我在这总结一个UDP. 直接贴上代码 import threadingimport SocketS ...

  6. socket编程-多个客户端向服务器发送人脸照片,服务器返回识别结果(服务器使用多线程)...

    recognition.py import numpy as np import face_recognition import os class recognition: def __init__( ...

  7. 基于事件的 NIO 多线程服务器--转载

    JDK1.4 的 NIO 有效解决了原有流式 IO 存在的线程开销的问题,在 NIO 中使用多线程,主要目的已不是为了应对每个客户端请求而分配独立的服务线程,而是通过多线程充分使用用多个 CPU 的处 ...

  8. python多线程网络编程

    背景 使用过flask框架后,我对request这个全局实例非常感兴趣.它在客户端发起请求后会保存着所有的客户端数据,例如用户上传的表单或者文件等.那么在很多客户端发起请求时,服务器是怎么去区分不同的 ...

  9. 服务器唯一id生成规则

    在使用hashCode的时候,发现会出现相同id,虽然几率很小.虽然发现并不是hashCode的原因,而是其他逻辑的问题. 但是还是试着自己写了一个id生成器,有些id是int的,比如说任务id:有些 ...

随机推荐

  1. Redis入门指南之二(安装及配置)

    本节主要内容 1. 前言2. redis安装3. 启动和停止Redis 1. 前言 安装Redis需要知道自己需要哪个版本,有针对性的安装,比如如果需要redis GEO这个地理集合的特性,那么red ...

  2. phalcon的save方法保存失败?

    phalcon的save方法保存失败? 因为表中设置了一个字段:disabled, 默认值是1, 在创建数据的时候,disabled没有传值过去,导致save方法一直是false, 当返回false时 ...

  3. 雷林鹏分享:jQuery EasyUI 树形菜单 - 树形网格添加分页

    jQuery EasyUI 树形菜单 - 树形网格添加分页 本教程展示如何向带有动态加载特性的树形网格(TreeGrid)添加分页. 创建树形网格(TreeGrid) 启用树形网格(TreeGrid) ...

  4. 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 ...

  5. ssh登陆被拒?(云:使用云的网页版远程登陆) 不好用。

    设定的密

  6. flex自定义preloader预加载进度条

    flex默认的preloader已经很不错了,可是有时候还是需要自定义的.   需要在要出现自定义预加载的程序的<mx:Application>标签里加入preloader="& ...

  7. CF1117E Decypher the String

    如果我们能询问一个排列的话,我们就可以得到这个置换,然后反向求解. 但现在字符集只有26. 考虑26^3>1e5. 用一个三维坐标去映射到一个一维整数,然后就可以构造排列了. #include& ...

  8. js动态检测加载 JQ

    var jqcdnurl = 'https://cdn.bootcss.com/jquery/3.2.1/jquery.js'; //控制台输出 function log() { for (var i ...

  9. 函数使用一:采购订单BAPI_PO_CREATE1

    REPORT YTEST01. DATA:GS_POHEADER TYPE BAPIMEPOHEADER, GS_POHEADERX TYPE BAPIMEPOHEADERX, GT_RETURN T ...

  10. jQuery生成二维码 jquery.qrcode.js

    https://github.com/jeromeetienne/jquery-qrcode 1.将jquery.qrcode.min.js和jquery添加到您的网页中 <script src ...