gpt4 book ai didi

Django TCP套接字通信

转载 作者:可可西里 更新时间:2023-11-01 02:37:09 33 4
gpt4 key购买 nike

我是 TCP 套接字编程的新手。我有一个与微 Controller 通信的基于 django 的服务器。现在,我想在服务器端实现基于 TCP 的套接字,以便与微 Controller 上的 TCP 套接字进行通信。谁能告诉我如何做到这一点?我应该在我的 django 服务器上使用什么库微处理器基本上每 5 秒打开一次套接字并向服务器发送一个通知。服务器端的我应该能够读取它并使用微处理器打开的这个套接字将数据泵回微处理器。

最佳答案

如果您已经熟悉 django,并且您的微 Controller 支持发送 HTTP (REST) 请求并且可以解析 Json,您只需添加一个返回 json 的常规基于 django 的 View 即可:

# views.py
from django.http import JsonResponse
def my_view(request):
# handle input here, probably using request.GET / request.POST
return JsonResponse({'status': 'OK'})

但是,如果你的微 Controller 非常简单,不能做 HTTP/json,你可以使用一个简单的 SocketServer来自 python 的标准库:

import SocketServer

class MyTCPHandler(SocketServer.BaseRequestHandler):

def handle(self):
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
server = SocketServer.TCPServer((HOST, PORT), MyTCPHandler)
server.serve_forever()

请记住,您仍然可以导入 django 的库并在 SocketServer 中使用 django 的 ORM (DB)。

另一个流行的选择是使用 Tornado's tcpserver :

from tornado.ioloop import IOLoop
from tornado.tcpserver import TCPServer


class MyTCPServer(TCPServer):
def handle_stream(self, stream, address):
def got_data(data):
print "Input: {}".format(repr(data))
stream.write("OK", stream.close)

stream.read_until("\n", got_data)


if __name__ == '__main__':
server = MyTCPServer()
server.listen(9876)
IOLoop.instance().start()

关于Django TCP套接字通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29307916/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com