python echo服务器和客户端(客户端可以用telnet之类的)
发上来记录一下,省得下次再写一遍
服务器:server.py
#-*- coding:utf-8 -*- from SocketServer import TCPServer, BaseRequestHandler
import traceback
import struct
import logging # 连接处理类
class MyBaseRequestHandler(BaseRequestHandler):
"""
#从BaseRequestHandler继承,并重写handle方法
"""
def handle(self):
#循环监听(读取)来自客户端的数据
try:
while True:
data = self.request.recv(4)
if data == '':
break
logging.info("recv data, echo")
self.request.sendall(data) except:
traceback.print_exc() logging.info("close connect")
self.request.close() if __name__ == "__main__":
#初始化日志
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
datefmt='%a, %d %b %Y %H:%M:%S',
#filename='myapp.log',
#filemode='w'
) logging.info("\n\n\n=========== Server start =========") host = "" #主机名,可以是ip,像localhost的主机名,或""
port = 5555 #端口
addr = (host, port) #购置TCPServer对象,
server = TCPServer(addr, MyBaseRequestHandler) #启动服务监听
server.serve_forever()
客户端:client.py
#-*- coding:utf-8 -*-
from socket import *
import sys
import time
import string HOST = sys.argv[1]
SPAN = 0;
if len(sys.argv) == 3:
SPAN = string.atof(sys.argv[2])
PORT = 5555
ADDR = (HOST, PORT)
tcpCliSock = socket(AF_INET, SOCK_STREAM)
tcpCliSock.connect(ADDR)
data = "aaaa"
maxD = 0
while True:
t1 = time.time()
tcpCliSock.send(data)
t = tcpCliSock.recv(4)
t2 = time.time()
td = t2 - t1;
if td > maxD:
maxD = td
print ("recv data , timediff=" + str(td) + ", max=" + str(maxD))
print("sleep " + str(SPAN))
time.sleep(SPAN)
python echo服务器和客户端(客户端可以用telnet之类的)的更多相关文章
- netty入坑第一步:了解netty和编写简单的Echo服务器和客户端
早期java API通过原生socket产生所谓的"blocking",大致过程是这样 这种的特点是每次只能处理一个请求,如果要实现多个请求并行,就还要分配一个新的线程来给每个客户 ...
- Linux网络编程--多线程实现echo服务器与客户端“一对多”功能,是网络编程的“Hello World!”
在linux平台下,用多线程实现echo服务器与客户端“一对多”(即是一台服务器可以响应多个客户端的请求).本人写了个demo,和大家一起分享,有不足的地方,请多多指教,我是壮壮熊. 编译时,在后面加 ...
- python socket 套接字编程 单进程服务器 实现多客户端访问
服务器: import socket #单进程服务器 实现多客户端访问 IO复用 #吧所有的客户端套接字 放在一个列表里面,一次又一次的便利过滤 server = socket.socket(sock ...
- Cloudera Manager安装之时间服务器和时间客户端(Ubuntu14.04)(二)
第二步: Cloudera Manager安装之时间服务器和时间客户端(二) 找一台机器作为时间服务器 我这里,放到ubuntucmbigdata1这台机器! 注意,之前是已经做了集群时间同步了. 在 ...
- python进阶6 HTTP协议客户端实现
httplib 1.httplib 是 python中http 协议的客户端实现,可以使用该模块来与 HTTP 服务器进行交互. httplib的内容不是很多,也比较简单.以下是一个非常简单的例子,使 ...
- 使用CBrother做TCP服务器与C++客户端通信
使用CBrother脚本做TCP服务器与C++客户端通信 工作中总是会遇到一些对于服务器压力不是特别大,但是代码量比较多,用C++写起来很不方便.对于这种需求,我选择用CBrother脚本做服务器,之 ...
- --with-http_realip_module选项(后台Nginx服务器记录原始客户端的IP地址 )
转自:http://blog.itpub.net/27043155/viewspace-734234/ 通过这个模块允许我们改变客户端请求头中客户端IP地址值(例如,X-Real-IP 或 X-For ...
- Java和Android Http连接程序:使用java.net.URL 下载服务器图片到客户端
Java和Android Http连接程序:使用java.net.URL 下载服务器图片到客户端 本博客前面博文中利用org.apache.http包中API进行Android客户端HTTP连接的例子 ...
- WCF 服务器已拒绝客户端凭据
将 WCF 服务器和客户端分别部署到不同机器上,可能会触发如下异常. 未处理 System.ServiceModel.Security.SecurityNegotiationException M ...
随机推荐
- 移动WEB测试工具 Adobe Edge Inspect
要用到的内容: Adobe Edge Code CC https://creative.adobe.com/products/code?promoid=KFKML Adobe Edge In ...
- Centos6.4 yum安装MariaDB5.5
vi /etc/yum.repos.d/MariaDB.repo 加入下面内容 [mariabd]name=MariaDBbaseurl=http://yum.mariadb.org/5.5.34/c ...
- python 中chr(),unichr(),ord()的用法
chr()根据整数返回对应的字符,也就是讲ascii转换为字符 unichr()将整数返回成unicode字符 ord()将字符转换成ascii码
- [Algorithms(Princeton)] Week1 - Percolation
public class Percolation { private boolean[] openSites; private int gridN; private WeightedQuickUnio ...
- 【BZOJ】1090: [SCOI2003]字符串折叠(dp)
http://www.lydsy.com/JudgeOnline/problem.php?id=1090 随便yy一下.. 设f[i,j]表示i-j的最小长度 f[i, j]=min{j-i+1, f ...
- 【BZOJ】2929: [Poi1999]洞穴攀行(最大流)
http://www.lydsy.com/JudgeOnline/problem.php?id=2929 题意描述不清..搞得我wa了一发.. 应该是,有1和n的点的边容量都为1,其余随便... 然后 ...
- c++ stack 的使用
(1) stack::empty bool empty ( ) const; 判断是否为空. return Value : true if the container size is 0, false ...
- asp.net 微信企业号办公系统-流程设计--流程步骤设置-数据设置
数据设置是控制在流程处理过程中,当前步骤的数据显示与编辑状态,控制当前步骤哪些字段为只读,隐藏或可编辑.需要配合表单设计器使用.
- 象写程序一样写博客:搭建基于github的博客
象写程序一样写博客:搭建基于github的博客 前言 github 真是无所不能.其 Pages 功能 支持上传 html,并且在页面中显示.于是有好事者做了一个基于 github 的博客管理工具 ...
- css阴影效果
moz-box-shadow: 0 0 10px #888; -webkit-box-shadow: 0 0 10px#888; box-shadow: 0 0 10px #888;