python-socket

本文介绍了使用Python的socket模块实现TCP/IP通信的基本过程。客户端通过socket连接服务器,并发送JSON格式的数据;服务端监听指定端口,接收并解析JSON数据,然后保存。关键点在于socket.listen()的参数n表示最大挂起连接数,影响服务器并发处理能力。
摘要由CSDN通过智能技术生成

socket.listen(n)
简单来说,这里的nt表示socket的”排队个数

  • 一般情况下,一个进程只有一个主线程(也就是单线程),那么socket允许的最大连接数为: n + 1在这里插入图片描述
  • 如果服务器是多线程,比如上面的代码例子是开了2个线程,那么socket允许的最大连接数就是: n + 2
  • 换句话说:排队的人数(就是那个n) + 正在就餐的人数(服务器正在处理的socket连接数) = 允许接待的总人数(socket允许的最大连接数)

客户端-发送数据


import socket, json
 
client = socket.socket()
 
# 连接服务器
addr = ('0.0.0.0', 5050)
client.connect(addr)
 
data = {"time":1604560567884,"sip":"30101012","alarmType":"Battery","type":"alarm"}
# 发送数据
client.send(json.dumps(data).encode())
 
client.close()

服务端-接收数据

            address = ('0.0.0.0', 5050)
            # 创建socket对象,同时设置通信模式,AF_INET代表IPv4,SOCK_STREAM代表流式socket,使用的是tcp协议
            server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            # 绑定到我们刚刚设置的ip和端口元组,代表我们的服务运行在本机的9999端口上
            server.bind(address)         
            # 开始监听,5位最大挂起的连接数
            server.listen(5)

            while True:
                print("server waiting")
                # accept()方法被动接受客户端连接,阻塞,等待连接.
                # client是客户端的socket对象,可以实现消息的接收和发送,addr表示客户端的地址
                client, addr = server.accept()
                data = client.recv(1024) # 代表从发过来的数据中读取1024byte的数据
                if data:
                    data = data.decode()
                input_Q = json.loads(data)
                print(input_Q)
                self.jindeeAlarmDataService.saveAlarmData(input_Q)
            server.close()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值