无法在python twi中写入套接字

2024-04-26 05:48:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python中搞乱了smpp实现。在java中,我可以:

output = new DataOutputStream(socket.getOutputStream());
out.write(someBytes)
do something else
output.write(someBytes)

当我尝试在python中执行同样的操作时:

^{pr2}$

第二个命令永远不会被调用。但如果我再联系一下:

s.send(bytes(data[:])) #send first
s.connect((host,port))
s.send(bytes(data[:])) #send second

那就行了。我是python新手,如果这是个简单的问题,请原谅我。我看了文档,找不到任何类似的东西。我需要能够发送到套接字n次,而不是每次都调用connect发送。如果每次需要发送时,我都需要建立一个新的套接字连接,这样做不起作用。我知道有用于smpp的python api,也有用于smpp的javaapi,但我喜欢自己实现。Java正在工作,现在需要用python解决这个问题。在

谢谢你

编辑:

代码如下:

import socket

bindPdu=[0, 0, 0, 33, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 112, 97, 118, 101, 108, 0, 112, 97, 118, 101, 108, 0, 0, 0, 0, 0, 0, 0, 1, 0]
s=socket.socket()
host="localhost"
port=2775
s.connect((host,port))
unbind=[0,0,0,16,0,0,0,6,0,0,0,0,0,0,0,1]
s.send(bytes(bindPdu[:]))
s.send(bytes(unbind[:]))

第一次发送发送绑定pdu,运行正常,但第二次不工作。测试服务器是正常的,因为它以前被测试过,从来没有像这样的问题。第二个应该发送unbind PDU,但它没有发送。在


Tags: sendhostnewoutputdatabytesportconnect
1条回答
网友
1楼 · 发布于 2024-04-26 05:48:50

你所说的“第二个命令从不被调用”是什么意思?程序挂了?如果你按Ctrl+C,它会给你回溯吗?在

我可以在同一个套接字上多次调用send。可能是你的服务器出了问题?在

import socket
import time

s = socket.socket()
s.connect(("google.com", 80))

while True:
    s.send("GET / HTTP/1.1\nConnection: keep-alive\n\n".encode('utf8'))
    time.sleep(1)
    response = s.recv(1024*128)
    print("got {} bytes".format(len(response)))

输出:

^{pr2}$

相关问题 更多 >