首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django TCP套接字通信

Django TCP套接字通信
EN

Stack Overflow用户
提问于 2015-03-28 02:38:45
回答 1查看 8.8K关注 0票数 3

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

EN

回答 1

Stack Overflow用户

发布于 2015-03-29 19:05:22

如果您已经熟悉django,并且您的微控制器支持发送HTTP (REST)请求并可以解析Json,那么您只需添加一个常规的基于django的视图来返回json:

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

但是,如果您的微控制器非常简单,并且不能执行HTTP/json,则可以使用python标准库中的简单SocketServer

代码语言:javascript
复制
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

代码语言:javascript
复制
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()
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29307916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档