socketserver.TCPServer Example

server side

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import socketserver
 
class MyTCPHandler(socketserver.BaseRequestHandler):
    """
    The request handler class for our server.
 
    It is instantiated once per connection to the server, and must
    override the handle() method to implement communication to the
    client.
    """
 
    def handle(self):
        # self.request is the TCP socket connected to the client
        self.data = self.request.recv(1024).strip()
        print("{} wrote:".format(self.client_address[0]))
        print(self.data)
        # just send back the same data, but upper-cased
        self.request.sendall(self.data.upper())
 
if __name__ == "__main__":
    HOST, PORT = "localhost"9999
 
    # Create the server, binding to localhost on port 9999
    server = socketserver.TCPServer((HOST, PORT), MyTCPHandler)
 
    # Activate the server; this will keep running until you
    # interrupt the program with Ctrl-C
    server.serve_forever()

client side

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import socket
import sys
 
HOST, PORT = "localhost"9999
data = " ".join(sys.argv[1:])
 
# Create a socket (SOCK_STREAM means a TCP socket)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 
try:
    # Connect to server and send data
    sock.connect((HOST, PORT))
    sock.sendall(bytes(data + "\n""utf-8"))
 
    # Receive data from the server and shut down
    received = str(sock.recv(1024), "utf-8")
finally:
    sock.close()
 
print("Sent:     {}".format(data))
print("Received: {}".format(received))

上面这个例子你会发现,依然不能实现多并发,哈哈,在server端做一下更改就可以了

1
server = socketserver.TCPServer((HOST, PORT), MyTCPHandler)

改成

1
server = socketserver.ThreadingTCPServer((HOST, PORT), MyTCPHandler)

最新文章

  1. Xcode 8.1 : Unable to read from device
  2. 一个叫 team 的表,里面只有一个字段name, 一共有4 条纪录,分别是a,b,c,d, 对应四个球队,现在四个球队进行比赛,用一条sql 语句显示所有可能的比赛组合.
  3. 浅谈ClickableSpan , 实现TextView文本某一部分文字的点击响应
  4. HibernateTools实现pojo类 数据库schma mapping映射的相互转换
  5. GSS7 spoj 6779. Can you answer these queries VII 树链剖分+线段树
  6. 基于SMB协议的共享文件读写 博客分类: Java
  7. 转Struts 权限控制
  8. 【暑假】[实用数据结构]范围最小值问题(RMQ)
  9. KMP算法简单回顾
  10. Android与js交互实例
  11. windows server 2008 R2之取消多余的安全配置
  12. coursera吴恩达 机器学习编程作业原文件 及我的作业
  13. 学习笔记-AngularJs(五)
  14. ORACLE SQL Developer日期显示格式不全
  15. 初级字典树查找在 Emoji、关键字检索上的运用 Part-3
  16. The required Server component failed to start so Tomcat is unable to start问题解决
  17. s21day25 python笔记
  18. netty总结
  19. Arm Cache学习总结
  20. mybatis 动态sql语句(2)

热门文章

  1. qt 使用多个ui文件
  2. INSERT INTO 语句用于向表格中插入新的行。
  3. php -- 设计模式 之 单例模式
  4. JAVA 并发编程-多个线程之间共享数据(六)
  5. db2 import和load
  6. AWS系列-EC2实例添加磁盘
  7. 关于Bootstrap的理解
  8. Hadoop单机安装配置过程:
  9. springboot整合mybatis之用外置服务器启动项目(二)
  10. HYSBZ 1036(树的统计Count)