python网络编程(九)
单进程服务器-非堵塞模式
服务器
- #coding=utf-8
- from socket import *
- import time
- # 用来存储所有的新链接的socket
- g_socketList = []
- def main():
- serSocket = socket(AF_INET, SOCK_STREAM)
- serSocket.setsockopt(SOL_SOCKET, SO_REUSEADDR , 1)
- localAddr = ('', 7788)
- serSocket.bind(localAddr)
- #可以适当修改listen中的值来看看不同的现象
- serSocket.listen(1000)
- #将套接字设置为非堵塞
- #设置为非堵塞后,如果accept时,恰巧没有客户端connect,那么accept会
- #产生一个异常,所以需要try来进行处理
- serSocket.setblocking(False)
- while True:
- #用来测试
- #time.sleep(0.5)
- try:
- newClientInfo = serSocket.accept()
- except Exception as result:
- pass
- else:
- print("一个新的客户端到来:%s"%str(newClientInfo))
- newClientInfo[0].setblocking(False)
- g_socketList.append(newClientInfo)
- # 用来存储需要删除的客户端信息
- needDelClientInfoList = []
- for clientSocket,clientAddr in g_socketList:
- try:
- recvData = clientSocket.recv(1024)
- if len(recvData)>0:
- print('recv[%s]:%s'%(str(clientAddr), recvData))
- else:
- print('[%s]客户端已经关闭'%str(clientAddr))
- clientSocket.close()
- g_needDelClientInfoList.append((clientSocket,clientAddr))
- except Exception as result:
- pass
- for needDelClientInfo in needDelClientInfoList:
- g_socketList.remove(needDelClientInfo)
- if __name__ == '__main__':
- main()
客户端
- #coding=utf-8
- from socket import *
- import random
- import time
- serverIp = raw_input("请输入服务器的ip:")
- connNum = raw_input("请输入要链接服务器的次数(例如1000):")
- g_socketList = []
- for i in range(int(connNum)):
- s = socket(AF_INET, SOCK_STREAM)
- s.connect((serverIp, 7788))
- g_socketList.append(s)
- print(i)
- while True:
- for s in g_socketList:
- s.send(str(random.randint(0,100)))
- # 用来测试用
- #time.sleep(1)
python网络编程(九)的更多相关文章
- Python 网络编程(二)
Python 网络编程 上一篇博客介绍了socket的基本概念以及实现了简单的TCP和UDP的客户端.服务器程序,本篇博客主要对socket编程进行更深入的讲解 一.简化版ssh实现 这是一个极其简单 ...
- Python 网络编程(一)
Python 网络编程 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. ...
- Python学习(22)python网络编程
Python 网络编程 Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的 ...
- linux网络编程九:splice函数,高效的零拷贝
from:http://blog.csdn.net/jasonliuvip/article/details/22600569 linux网络编程九:splice函数,高效的零拷贝 最近在看<Li ...
- Day07 - Python 网络编程 Socket
1. Python 网络编程 Python 提供了两个级别访问网络服务: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口 ...
- python网络编程-01
python网络编程 1.socket模块介绍 ①在网络编程中的一个基本组件就是套接字(socket),socket是两个程序之间的“信息通道”. ②套接字包括两个部分:服务器套接字.客户机套接字 ③ ...
- 《Python网络编程》学习笔记--使用谷歌地理编码API获取一个JSON文档
Foundations of Python Network Programing,Third Edition <python网络编程>,本书中的代码可在Github上搜索fopnp下载 本 ...
- Python网络编程基础pdf
Python网络编程基础(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1VGwGtMSZbE0bSZe-MBl6qA 提取码:mert 复制这段内容后打开百度网盘手 ...
- python 网络编程(Socket)
# from wsgiref.simple_server import make_server## def RunServer(environ,start_response):# start_resp ...
- python 网络编程 IO多路复用之epoll
python网络编程——IO多路复用之epoll 1.内核EPOLL模型讲解 此部分参考http://blog.csdn.net/mango_song/article/details/4264 ...
随机推荐
- Lua中assert( )函数的使用
当Lua遇到不期望的情况时就会抛出错误,比如:两个非数字进行相加:调用一个非函数的变量:访问表中不存在的值等.你也可以通过调用error函数显示的抛出错误,error的参数是要抛出的错误信息. ass ...
- mysql如何在一张表中插入一万条数据?(用存储过程解决)
写一个存储过程,里面写一个循环,就可以了.主键你现在不是自增的,所以写语句的时候,就Insert到3个字段中. DELIMITER $$ DROP PROCEDURE IF EXISTS `proc_ ...
- java去除html代码中含有的html、js、css标签,获取文字内容
https://blog.csdn.net/u010882234/article/details/80585175
- 【NOI2017】泳池
题解: 满分的笛卡尔树以后再学吧.. 40分还是比较好想的 但是状态挺复杂的 直接贴代码了 代码: #include <bits/stdc++.h> using namespace std ...
- python之 MySQLdb 实践 爬一爬号码
0.目录 2.构建URL3.新建数据库4.新建汇总表5.定义连接数据库函数:connect_db(db=None, cursorclass=DictCursor)6.汇总表填充必要数据7.新建各省份子 ...
- P1005 矩阵取数游戏 区间dp 高精度
题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n \times mn×m的矩阵,矩阵中的每个元素a_{i,j}ai,j均为非负整数.游戏规则如下: 每次取数时须从每行各取走一个元素,共n ...
- 013 mysql中find_in_set()函数的使用
在工作中遇见过,对于新知识,在这里写一写文档. 1.作用 举个例子,也许不理解,在看完后面的SQL示例,再来看就明白了: 有个文章表里面有个type字段,它存储的是文章类型,有 1头条.2推荐.3热点 ...
- 003 python中的内置函数
一:如何查看内置函数 1.命令 dir(__builtins__) 2.效果 二:具体的用法 1.input 简单使用: 2.type 返回变量的类型 3.str 将类型转变为字符串 4.isinst ...
- 爬虫3 requests基础之 乱码编码问题
import requests res = requests.get('http://www.quanshuwang.com') res.encoding = 'gbk' print(res.text ...
- 浅谈solr
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口.用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引:也可以通过Http Get操 ...