socket 多连接

本文档为文档https://www.cnblogs.com/wodeboke-y/p/11241472.html

后续内容。

上一文档中的案例2给出了一个阻塞型socket server

下面为非阻塞型,关键点如下:

accept阻塞,使用thread解决

socket阻塞,使用setblocking解决

# coding=utf-8
# !/usr/bin/env python
'''

'''

from socket import *
from time import ctime
import threading
import time

HOST = ''
PORT = 2159
BUFSIZ = 1024
ADDR = (HOST, PORT)

tcpSerSock = socket(AF_INET, SOCK_STREAM)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(5)
socks = []  # 放每个客户端的socket

def handle():
    while True:
        for s in socks:
            try:
                data =
s.recv(BUFSIZ)  # 到这里程序继续向下执行
           
except Exception as
e:
                continue
            if not
data:
                socks.remove(s)
                continue
           
s.send('[%s],%s' %
(ctime(), data))

t = threading.Thread(target=handle) 
# 子线程
if __name__ == '__main__':
    t.start()
    print(u'我在%s线程中 ' % threading.current_thread().name)  # 本身是主线程
   
print('waiting
for connecting...'
)
    while True:
        clientSock, addr =
tcpSerSock.accept()
        print('connected
from:'
, addr)
        clientSock.setblocking(0)
        socks.append(clientSock)

socket 多连接的更多相关文章

  1. ZeroMQ接口函数之 :zmq_disconnect - 断开一个socket的连接

    ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq_disconnect zmq_disconnect(3) ØMQ Manual - ØMQ/3.2.5 Name ...

  2. 基于心跳的socket长连接

    http://coach.iteye.com/blog/2024444 基于心跳的socket长连接 博客分类: http socket 案例: 心跳: socket模拟网页的报文连接某个网站,创建t ...

  3. 初步探究java中程序退出、GC垃圾回收时,socket tcp连接的行为

    初步探究java中程序退出.GC垃圾回收时,socket tcp连接的行为 今天在项目开发中需要用到socket tcp连接相关(作为tcp客户端),在思考中发觉需要理清socket主动.被动关闭时发 ...

  4. 网络编程懒人入门(八):手把手教你写基于TCP的Socket长连接

    本文原作者:“水晶虾饺”,原文由“玉刚说”写作平台提供写作赞助,原文版权归“玉刚说”微信公众号所有,即时通讯网收录时有改动. 1.引言 好多小白初次接触即时通讯(比如:IM或者消息推送应用)时,总是不 ...

  5. android端 socket长连接 架构

    看过包建强的<App研发录>之后对其中的基础Activity类封装感到惊讶,一直想找一种方式去解决关于app中使用socket长连接问题,如何实现简易的封装来达到主活动中涉及socket相 ...

  6. lnmp使用socket方式连接nginx优化php-fpm性能

    lnmp使用socket方式连接nginx优化php-fpm性能 Nginx连接fastcgi的方式有2种:TCP和unix domain socket 什么是Unix domain socket?- ...

  7. 【Socket】关于socket长连接的心跳包

    TCP的socket本身就是长连接的,那么为什么还要心跳包呢? 在smack里有个30s发送一个空消息的线程,同样关于心跳包(keepalive) 据网络搜索到的资料解释如下 内网机器如果不主动向外发 ...

  8. 基于netty框架的socket长连接负载均衡解决方案

    socket通讯的单机瓶颈 物联网的项目socket使用方式有两种: 短连接的socket请求 维持socket长连接的请求 对于socket短链接来说就好比是http请求,请求服务器,服务器返回数据 ...

  9. 为什么有监听socket和连接socket,为什么产生两个socket

    为什么有监听socket和连接socket,为什么产生两个socket 先看一半的socket建立连接的双方的过程: 客户端: socket()---->创建出 active_socket_fd ...

  10. Socket长连接和短连接的区别

    https://blog.csdn.net/jasonjwl/article/details/52085264 短连接 连接->传输数据->关闭连接 HTTP是无状态的,浏览器和服务器每进 ...

随机推荐

  1. CI框架Email类发送邮件提示Unable to send data: . The following SMTP error was encountered: Unable to .......

    最近服务器迁移,然后CI框架做的项目发邮件全挂掉了,刚开始是25端口没开,然后开了正好还是有问题, 1.打印请求信息和返回信息 echo $this->email->print_debug ...

  2. Flink架构(四)- 状态管理

    状态管理 之前我们提到过大多数流应用是有状态的.很多operators会不断的访问并更新某中状态,例如一个window中收集了多少条记录,输入源中当前读到的位置,亦或是用户定义的特定operators ...

  3. 磁盘分区(1):fdisk和parted

    一.Linux存储管理 关于Linux硬盘的识别: (1)如果是IDE设备,在计算机中将被识别为hd,第一个IDE设备会被识别为hda,第二个IDE设备会被识别为hdb,依此类推. (2)如果是SAT ...

  4. 使用表单对象时,报错 form is undefine

    先看例子 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <ti ...

  5. css transform 2D3D转换

    2D转换 translate 移动 <style> div{ width: 100px; height: 100px; } .box{ border: 1px dashed red; fl ...

  6. JS高级---新内容课程介绍

    重点: 原型链 重点:不同的继承 原型的另一个作用 重点:this指向要知道到底是谁   复习原型 原型链 原型的指向是否可以改变 继承 如何实现继承 原型的方式继承 借用构造函数继承 组合继承 拷贝 ...

  7. Winform 随机抽奖小程序

    效果图: 主要代码: Form1.cs using System; using System.Drawing; using System.IO; using System.Runtime.Intero ...

  8. (matlab)自定义图像(matlab)

    clc;clear all;A=[0 230 255 60 30 100];A=uint8(A);imshow(A,'InitialMagnification','fit') 如图: clc;clea ...

  9. element中的分页

    在template <template> <div class="Terminal" v-loading="loading"> < ...

  10. 左偏树 (p3261) 对我来说是一道进阶题

    题意:有n座城池,m个人: 每座城池有一个耐久度: 每座城池有一个父亲城池(肯定会形成一棵树),还有flag base (这个看题意) 每个人有一个战力值和一个开始进攻的城池序号: 问:1.每个城池能 ...