【问题标题】:Python socket server craps out after receiving dataPython 套接字服务器在接收到数据后崩溃
【发布时间】:2011-03-13 00:01:03
【问题描述】:

我目前正在涉足套接字。
我有一个 jquery 脚本,它使用一个非常小的 flash swf 文件来建立一个真正的套接字连接。作为服务器,我想使用 python。

一切正常,但我只能向服务器发送一次信息。

我已经为服务器尝试了 2 段 python 代码。
我想因为他们都有同样的问题,所以问题不在这里。

# TCP server example
import socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(("", 2000))
server_socket.listen(5)

print "TCPServer Waiting for client on port 2000"

while 1:
        client_socket, address = server_socket.accept()
        print "I got a connection from ", address
        while 1:
                data = client_socket.recv(512)
                print "RECIEVED:" , data

或者这个:

import socket
mySocket = socket.socket ( socket.AF_INET, socket.SOCK_STREAM )
mySocket.bind ( ( '', 2000 ) )
mySocket.listen ( 1 )
while True:
   channel, details = mySocket.accept()
   print 'We have opened a connection with', details
   print channel.recv ( 100 )
   channel.close()

在客户端我使用http://devpro.it/xmlsocket/
发送一条数据就像执行一样简单

xmls.send('some text');

哪个到达,但之后它停止工作。

有人知道解决办法吗? 或者我可以使用更好的 javascript/swf 组合?

【问题讨论】:

  • 我建议你看看twisted

标签: javascript python flash sockets


【解决方案1】:

我认为您需要在关闭连接后再次“收听”。 此外,套接字根据 tcp 规范传递数据。您不能保证在一个套接字中读取发送的所有数据。我看不到执行多次读取并组装完整的“消息”

【讨论】:

  • 确实如此。服务器的例子就是这样:一个非常基本的例子。我看到了一个循环,并认为它会永远持续下去。它被构建为在一次数据爆发后退出。这是一个非常好的 Python 服务器教程,甚至带有线程:ilab.cs.byu.edu/python/threadingmodule.html
【解决方案2】:

对于flash和python之间的通信,我使用:

http://pyamf.org/

您可以设置一个套接字服务器,或者更好的是一个小型 django 应用程序。然后,您可以根据需要使用安全身份验证、令牌、cookie 和强类型。

【讨论】:

    猜你喜欢
    • 2021-08-30
    • 1970-01-01
    • 1970-01-01
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    • 2017-04-30
    • 2020-09-17
    • 2017-07-17
    相关资源
    最近更新 更多