【发布时间】:2015-01-23 09:48:27
【问题描述】:
下面的代码通过套接字从 iPhone 接收数据,然后我想将接收到的数据发送到另一个通过不同套接字运行的 python 脚本。我的尝试如下。另一台服务器可以正常接收消息,但是一旦我发送 second 消息,我就会收到 errno 9 bad file descriptor。无论如何要更改以下代码,以便它可以连续将接收到的数据直接发送到另一个套接字?
import os
from twisted.internet.protocol import Protocol, Factory
from twisted.internet import reactor
from threading import Thread
class IphoneChat(Protocol):
def connectionMade(self):
self.factory.clients.append(self)
print "A new client has connected"
def connectionLost(self, reason):
print "client disconnected"
def dataReceived(self, data):
print "Message Received: ", data
TCP_IP = '127.0.0.1'
TCP_PORT = 5000
BUFFER_SIZE = 1024
self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))
s.send(data)
s.close()
def message(self, message):
self.transport.write(message + '\n')
factory = Factory()
factory.protocol = IphoneChat
factory.clients = []
reactor.listenTCP(3000, factory)
print "listening to 3000"
reactor.run()
【问题讨论】:
-
请修复代码或填补缺失的部分......它无法工作或
s是dataReceived()方法中的全局变量:这将引发您的错误。