我对python几乎一无所知,但我正在尝试学习关于NSSockets的一个教程,它使用Python。这是python脚本。脚本是用python2编写的,但我必须在python 3下运行它。
from twisted.internet.protocol import Factory, Protocol
from twisted.internet import reactor
class IphoneChat(Protocol):
def connectionMade(self):
self.factory.clients.append(self)
print("clients are ", self.factory.clients)
def connectionLost(self, reason):
self.factory.clients.remove(self)
def dataReceived(self, data):
a = data.split(':')
print(a)
if len(a) > 1:
command = a[0]
content = a[1]
msg = ""
if command == "iam":
self.name = content
msg = self.name + " has joined"
elif command == "msg":
msg = self.name + ": " + content
print(msg)
for c in self.factory.clients:
c.message(msg)
def message(self, message):
self.transport.write(message + '\n')
factory = Factory()
factory.protocol = IphoneChat
factory.clients = []
reactor.listenTCP(80, factory)
print("Iphone Chat server started")
reactor.run()它可以工作,但是当我试图连接我的Swift代码时,它会与这条消息一起崩溃。
File "server.py", line 13, in dataReceived
a = data.split(':')
builtins.TypeError: a bytes-like object is required, not 'str'抱怨我发送的数据格式错误;这是发送消息的快速代码。
func sayhello() {
let response = String(format:"iam:brian")
let dataToSend = [UInt8](response.utf8)
outputStream?.write(dataToSend, maxLength: dataToSend.count)
}我怎么才能治好巨蟒和巨蟒呢?我正在努力学习/翻译的教程已经出版了。
发布于 2016-03-12 05:15:31
多亏了https://stackoverflow.com/users/1076479/gil-hamilton链接,我终于找到了我正在看的东西。解决方案。我使用的是我在这里发布的相同的快速代码,我删除了python的最后一节。我正在发送和接收这个。
Iphone Chat server started
clients are [<__main__.IphoneChat object at 0x1035039e8>]
b'iam:brian'现在我知道了问题的所在,用巨蟒我可以找到答案!我基本上在python脚本中删除了这个。
def dataReceived(self, data):
a = data.split(':')
print(a)
if len(a) > 1:
command = a[0]
content = a[1]
msg = ""
if command == "iam":
self.name = content
msg = self.name + " has joined"
elif command == "msg":
msg = self.name + ": " + content
print(msg)
for c in self.factory.clients:
c.message(msg)
def message(self, message):
self.transport.write(message + '\n')用这个代替它..。
def dataReceived(self, data):
print(data)
dumb=data.decode('utf8')
print(dumb)太简单了,太蠢了.
https://stackoverflow.com/questions/35943613
复制相似问题