【发布时间】:2014-05-19 21:34:37
【问题描述】:
我正在通过套接字连接发送一些数据。我在线程中有一个时钟滴答作响。从那里我将结果生成给另一个函数;
Midi.py
def startClock(self):
frame_rate = 24
interval = 1. / frame_rate
while True:
if self.playing:
for i in range(0,8):
#do some irrelevant stuff here
quarter_frame = '0x{}{}'.format(i,x)
quarter_frame = int(quarter_frame, 16)
clock = [0xF1, quarter_frame]
yield(clock)
Main.py
def startClock(self):
clock = midi.startClock()
for i in clock:
client.sendMessage(i)
print(i)
在客户端输出以下内容并且正确:
[241, 12]
[241, 16]
[241, 38]
[241, 48]
[241, 64]
[241, 80]
[241, 96]
[241, 112]
...
当我将它发送到服务器时,像这样:
def sendMessage(self, message):
self.s.send(pickle.dumps(message))
我得到了一个迭代,如下所示(有时会有所不同,但似乎是从 1 到 16):
[241, 0]
[241, 2]
[241, 3]
[241, 4]
[241, 5]
[241, 7]
[241, 8]
[241, 9]
...
我在这里收到消息:
def receiveMessage(self, conn, addr):
try:
while True:
data = pickle.loads(conn.recv(1024))
print(data)
哪里出错了?
【问题讨论】:
-
嗯。你可以用base64编码base64encode.net/python-base64-b64encode看看是不是真的是编码问题
-
为什么有两个
startClock(self)方法? -
Main.py 中的一个处理按钮点击,另一个处理时钟。
-
如果你想把完整的代码贴到 pastebin 里,我会试试看能不能重现你的错误。
-
base64 编码乍一看似乎无法修复它。明天我会好好看看它