python TCP多客户端连接

Python TCP服务端代码:

# coding=utf-8

# !/usr/bin/env python

from socket import *

from time import ctime

import threading

import time

HOST = ‘‘   #主机地址

PORT = 3046  #端口

BUFSIZ = 1024  #缓冲区大小

ADDR = (HOST, PORT)  #地址及端口

tcpSerSock = socket(AF_INET, SOCK_STREAM)   #创建一个TCP套接字

tcpSerSock.bind(ADDR)       #绑定地址及端口

tcpSerSock.listen(5)        #最大client连接数为5

socks = []  # 放每个客户端的socket

#创建一个遍历sock线程,接收数据

def handle():
     while True:
         for s in socks:
             try:
                 data = s.recv(BUFSIZ)  # 到这里程序继续向下执行
             except Exception, e: #无接收异常捕获
                 #print "接收异常!";
                 continue
             if not data: #无数据接收则移除该客户端引用
                 s.send(‘[%s],%s‘ % (ctime(), ""))  #断开连接之前需要响应客户端,否则客户端无法再次建立连接
                 info=s.getpeername()
                 print "客户端",info,"断开连接!"
                 s.close()   #断开该cilent连接

socks.remove(s) #从数组中移除该cilent连接引用
                 continue
             s.send(‘[%s],%s‘ % (ctime(), data))  #有数据接收则返回数据
             print data;

t = threading.Thread(target=handle)  # 子线程

if __name__ == ‘__main__‘:
     t.start()   #启动线程
     print ‘waiting for connecting...‘
     while True:  #循环监听连接
         clientSock, addr = tcpSerSock.accept() #等待client连接
         print  ‘connected from:‘, addr  #打印客户端地址及其端口信息
         clientSock.setblocking(0)   #之后就是非阻塞的
         socks.append(clientSock)  #保存该客户端引用到socks数组

TCP工具做客户端连接测试:


断开连接:


原文地址:https://www.cnblogs.com/Yfw-Crayy/p/10959989.html

时间: 2024-07-29 17:31:57

python TCP多客户端连接的相关文章

网络通信中tcp多客户端连接

网络编程中的tcp实例太多了,自己也写了好几次(羞愧),今天在想一对一的TCP知道怎么写了,可是一对多的怎么办呢?服务器是如何知道要给那个发送数据呢?做开发的同学应该经常听说uid这个属性.可以为什么通过UID就知道要发送的数据是给正确的用户的呢? 不怎么忙的时候.仔细的了解了一下TCP的几个API和其中的参数.下面来看一下这几个API和参数: 描述:当创建socket套接字后,该套接字并没有鱼本机地址和端口等信息相连接,而bind函数将完成这些工作 包含的头文件 <sys/types.h>

基于TCP网络通信的自动升级程序源码分析-客户端连接服务器

服务器开始监听 //从配置文件获取要监听的IP和端口 string strIP = System.Configuration.ConfigurationManager.AppSettings["IPAddress"]; int port = int.Parse(System.Configuration.ConfigurationManager.AppSettings["Port"]); //开始监听 Connection.StartListening(Connect

0039-如何使用Python Impyla客户端连接Hive和Impala

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看. 1.文档编写目的 继上一章讲述如何在CDH集群安装Anaconda&搭建Python私有源后,本章节主要讲述如何使用Pyton Impyla客户端连接CDH集群的HiveServer2和Impala Daemon,并进行SQL操作. 内容概述 1.依赖包安装 2.代码编写 3.代码测试 测试环境 1.CM和CDH版本为5.11.2 2.RedHat7.2 前置条件 1.CDH集群环境正常运行 2.Anaconda已安装并配置环境变量

Python TCP通信网络编程

最近在看廖雪峰老师的基础教程(http://www.liaoxuefeng.com/),今天实现了一下简单Python的Socket的网络编程. 1. Socket网络编程 Socket是网络编程的一个抽象概念.通常我们用一个Socket表示“打开了一个网络链接”,而打开一个Socket需要知道目标计算机的IP地址和端口号,再指定协议类型即可. 2. 客户端 大多数连接都是可靠的TCP连接.创建TCP连接时,主动发起连接的叫客户端,被动响应连接的叫服务器.举个例子,当我们在浏览器中访问新浪时,我

使用windows server2012时FileZilla客户端连接时报150 Opening data channel for directory listing of &quot;/&quot; 响应:425 Can&#39;t open data connection

425 Can't open data connection 和 读取目录列表失败 问题解决 这个问题主要是由于使用Passive Mode模式造成的,解决这个问题很简单: 1.在ftp服务软件中设置指定端口地址范围,允许Passive Mode使用,比如60000-60020 2.然后在ftp服务器的系统防火墙上打开这些tcp端口,比如是60000-60020,如果使用windows自带的防火墙,就一条一条的增加,20行有点麻烦,但是可以解决. 如果ftp用户较多,可以扩大端口范围. 3.如果

配置ORACLE 客户端连接到数据库

--================================= -- 配置ORACLE 客户端连接到数据库 --================================= Oracle 客户端连接到Oracle 数据库服务器貌似不同于SQL serve中的网络配置,其实不然,只不过所有的SQL server 运行于Windows平台,故很多配置直接集成到了操作系统之中.所以无需配置客户端即可连接到服务器.Oracle 客户端连接到数据库依赖于Oracle Net.Oracle提供

Redis 客户端连接

Redis 通过监听一个 TCP 端口或者 Unix socket 的方式来接收来自客户端的连接,当一个连接建立后,Redis 内部会进行以下一些操作: 首先,客户端 socket 会被设置为非阻塞模式,因为 Redis 在网络事件处理上采用的是非阻塞多路复用模型. 然后为这个 socket 设置 TCP_NODELAY 属性,禁用 Nagle 算法 然后创建一个可读的文件事件用于监听这个客户端 socket 的数据发送 最大连接数 在 Redis2.4 中,最大连接数是被直接硬编码在代码里面的

Oracle RAC 客户端连接负载均衡(Load Balance)

实现负载均衡(Load Balance)是Oracle RAC最重要的特性之一,主要是把负载平均分配到集群中的各个节点,以提高系统的整体吞吐能力.通常情况下有两种方式来实现负载均衡,一个是基于客户端连接的负载均衡,一个是基于服务器端监听器(Listener)收集到的信息来将新的连接请求分配到连接数较少实例上的实现方式.本文主要讨论的是基于客户端连接的负载均衡,并给出演示. 与负载均衡配置之前的监听配置请参考              ORACLE RAC 监听配置 (listener.ora t

使用PL/SQL客户端连接远程oracle数据库

一直以来使用sql develope连接数据库,只要写上ip,用户名,密码,sid等就能连接,后来发现使用PL/SQL连接远程oracle数据库怎么连啊? 这里使用了修改oracle配置文件的方式: 配置文件路径为    D:\app\huyueyang\product\11.1.0\db_1\NETWORK\ADMIN 修改下面的tnsnames.ora,这个是你配置连接的配置文件,安装时候一般会有个默认的orcl实例 如: orcl= (DESCRIPTION = (ADDRESS = (P