无法在python中写入套接字两次

无法在python中写入套接字两次,python,sockets,send,smpp,Python,Sockets,Send,Smpp,我正在处理python中的smpp实现。在java中,我可以做到: output = new DataOutputStream(socket.getOutputStream()); out.write(someBytes) do something else output.write(someBytes) 当我尝试在python中执行相同操作时,如: s=socket.socket() host="host" port=port s.connect((host,port)) s.send(by

我正在处理python中的smpp实现。在java中,我可以做到:

output = new DataOutputStream(socket.getOutputStream());
out.write(someBytes)
do something else
output.write(someBytes)
当我尝试在python中执行相同操作时,如:

s=socket.socket()
host="host"
port=port
s.connect((host,port))
s.send(bytes(somedata[:]))
s.send(bytes(somedata[:]))
第二个命令永远不会被调用。但如果我再联系一次:

s.send(bytes(data[:])) #send first
s.connect((host,port))
s.send(bytes(data[:])) #send second
然后它就起作用了。我是python新手,如果这是一个简单的问题,请原谅我。我阅读了文档,找不到任何类似的东西。我需要能够发送到套接字n次,而无需为每次发送调用连接。如果每次需要发送时都需要与套接字建立新连接,则无法完成此任务。我知道smpp有python api,也有java api,但我喜欢自己实现。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[:]))
第一个发送发送bind pdu,运行良好,但第二个不工作。测试服务器是正常的,因为它以前已经测试过,从来没有出现过这样的问题。第二个命令应该发送解除绑定的PDU,但它没有发送。

您所说的“第二个命令永远不会被调用”是什么意思?程序挂起了吗?如果你按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)))
输出:

$ python34 s.py
got 55236 bytes
got 55191 bytes
got 55228 bytes
got 55262 bytes
got 55244 bytes
got 55221 bytes
got 55252 bytes
...

也许可以尝试代替
send()
?程序不挂起,只需在没有第二个send命令的情况下完成即可。我会编辑我的问题,包括代码。对于你的例子,我也可以发送两次到谷歌。我将尝试另一个smpp服务器,然后我认为它一定是特定于smpp的,您正在与之交谈的服务器,或者python代码与java代码中未显示的其他内容。可能服务器正在关闭连接?您还可以尝试使用tcpdump查看从java进程和python进程发送的确切网络数据包。我还看到了一些用于SMPP的python库(python SMPP、python smpplib),也许可以尝试使用其中的一个?