前面提到如何使用socket模块启动tcpserver:

创建socket:sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

绑定ip:sock.bind(ip,port)

监听端口:sock.listen(1)

接受连接: sock.accept()

现在我们使用一个更简单的方法创建一个TCP server。这就是SocketServer模块。这个模块提供了Socket关于TCP和UDP server的封装。

先上代码:

import SocketServer
import sys
import argparse class TCPrequesthander(SocketServer.BaseRequestHandler):
def handle(self):
self.data = self.request.recv(1024).strip()
print "{} wrote:".format(self.client_address[0])
print self.data
self.request.sendall(self.data.upper()) def startTCPserver(ip, port): serverAddr = (ip, port)
server = SocketServer.TCPServer(serverAddr, TCPrequesthander)
server.serve_forever() if __name__ == '__main__':
arg = argparse.ArgumentParser(description='input port and ip')
arg.add_argument('-i', help='input the ip address')
arg.add_argument('-p', type=int, help='input the port')
args = arg.parse_args()
print 'ip : port ' + args.i +" " + str(args.p)
startTCPserver(args.i, args.p)

代码测试:

在服务器上启动如下:

# python socketserver_1_tcpserver.py -i 10.135.13.157 -p 12345
ip : port 10.135.13.157 12345

使用tcp client发送消息:

10.135.13.154 wrote:
echo message
10.135.13.154 wrote:
echo message

代码分析:

首先在SocketServer模块中需要创建一个handler的类,这个类用于连接的处理。

这个类的基类为SocketServer.BaseRequestHandler, 提供handle(), finish(),setup()三个函数,一般使用handle。

我们在TCPrequesthander继承基类,重写handle()函数,处理消息。

第二步骤使用SocketServer中提供的TCPserver启动一个TCPserver。需要两个参数:

  地址: (ip, port)

handler: 我们创建的TCPrequesthander

代码完成。相对于socket模块更加的简洁迅速。

  

socket - socketserver - start TCP server的更多相关文章

  1. [转] 3个学习Socket编程的简单例子:TCP Server/Client, Select

    以前都是采用ACE的编写网络应用,最近由于工作需要,需要直接只用socket接口编写CS的代码,重新学习这方面的知识,给出自己所用到的3个简单例子,都是拷贝别人的程序.如果你能完全理解这3个例子,估计 ...

  2. Socket TCP Server一个端口可以有多少个长连接?受到什么影响?linux最大文件句柄数量总结

    Socket TCP Server一个端口可以有多少个长连接? 网上答案很多,不知道那个才是正确的 理论上是无限的 16.Linux中,一个端口能够接受tcp链接数量的理论上限是? A.1024 B. ...

  3. TCP/UDP Socket调试工具提供了TCP Server,TCP Client,UDP Server,UDP Client,UDP Group 五种Socket调试方案。

    一.TCP通信测试: 1)   创建TCP Server: 选中左方的TCP Server, 然后点击”创建”按钮,软件弹出监听端口输入框 输入监听端口后,即创建了一个在指定端口上进行监听的TCP S ...

  4. [转]一个基于完成端口的TCP Server Framework,浅析IOCP

    [转]一个基于完成端口的TCP Server Framework,浅析IOCP http://www.cppblog.com/adapterofcoms/archive/2010/06/26/1187 ...

  5. python3之socket&socketserver网络编程

    1.套接字与套接模块 套接字是为特定网络协议(例如TCP/IP,ICMP/IP,UDP/IP等)套件对上的网络应用程序提供者提供当前可移植标准的对象.它们允许程序接受并进行连接,如发送和接受数据.为了 ...

  6. python Socket socketserver

    Socket 套接字 socket的 类型 实现socket对象时传入 到socket 类中 socket.AF_INET 服务器间的通讯 IPv4 socket.AF_INET6 IPv6 sock ...

  7. 进度条 --- socket ---socketserver

    TCP:可靠的面向连接的协议,传输效率低,全双工通信,流数据传输.运用:web浏览器,电子邮件,文件传输程序 UDP:不可靠的,无连接的服务,传输效率高,面向数据包的传输,只能发短消息.运用:dns ...

  8. 【转载】C# Tutorial - Simple Threaded TCP Server

    http://tech.pro/tutorial/704/csharp-tutorial-simple-threaded-tcp-server In this tutorial I'm going t ...

  9. Linux系统编程(35)—— socket编程之TCP服务器的并发处理

    我们知道,服务器通常是要同时服务多个客户端的,如果我们运行上一篇实现的server和client之后,再开一个终端运行client试试,新的client就不能能得到服务了.因为服务器之支持一个连接. ...

随机推荐

  1. mpp文件转换成jpg图片,可以用pdf文件做中转站

    用project软件做了一个表,发现不能转换成图片,先把mpp文件转换成pdf文件,然后用PS打开pdf文件,存储为jpg格式就行了

  2. @echo off 与echo off

    echo off 关闭其他命令的显示(但是不包括自身这条命令) @echo off 关闭所有命令的显示(@关闭其后命令的显示)

  3. Factory 模式

    在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 许多类型对象的创造需要一 ...

  4. VS2013 预定义的宏

    Visual Studio 2013 预定义的宏 https://msdn.microsoft.com/zh-cn/library/b0084kay(v=vs.120).aspx 列出预定义的 ANS ...

  5. python function parameter

    Python 2.7.10 (default, Oct 14 2015, 16:09:02) [GCC 5.2.1 20151010] on linux2 Type "copyright&q ...

  6. PHP实验三

    1.输出下列语句地结果 <?php // while语句应用 $i = 1; while ( $i <= 20) { echo $i; if ( $i < 10 ) echo &qu ...

  7. Outlook~设置

    outlook2013 中帐户设置无法直接更改邮件投递位置到本地的.pst文件,“更改文件夹”选项已经删除. Exchange 传递到 Outlook 数据文件 (.pst) 升级到 Outlook ...

  8. CentOS7 开机调整亮度

    默认亮度是100,受不了,所与就自己想了个办法,依赖其它的自启动服务使我的设置生效. /usr/lib/systemd/scripts/nfs-utils_env.sh这是一个开机自启动服务要用到的脚 ...

  9. Mysqle 常用 函数

    一.数学函数 数学函数主要用于处理数字,包括整型.浮点数等.             select   可以用作输出 ABS(x) 返回x的绝对值 SELECT ABS(-1) -- 返回1 CEIL ...

  10. web前端学习部落22群开源分享 左边菜单导航

    有大量web前端开发工具及学习资料,可以搜群[ web前端学习部落22群 ]进行下载,遇到学习问题也可以问群内专家以及课程老师哟 <!DOCTYPE html> <html lang ...