我正在尝试在python中创建一个套接字客户端,我可以发送第一条消息,没有错误,但是当我尝试发送第二条消息时,它会停止,有人可以帮忙吗?
import socket , time
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
def OpenConnection(IP,PORT):
global sock
sock.connect((IP, PORT))
def SendMessage(StringMessage):
global sock
print "Step 1"
sock.send(StringMessage)
print "Step 2"
reply = sock.recv(1024) # limit reply to 1024K
print StringMessage
return reply
def CloseConnection():
global sock
sock.close()
HOST, PORT = 'localhost', 34567
OpenConnection(HOST,PORT)
print SendMessage('test1')
print "Sleep for 3"
time.sleep(3)
print "Sendind Second Message.."
print SendMessage('test2')
CloseConnection()
答案 0 :(得分:1)
您的代码对我有用 - 您要连接的服务器是什么?我使用netcat监听端口34567.这是首次运行程序后的服务器输出:
$ nc -l 34567
test1
这是客户端
$ python socktimeout.py
Step 1
Step 2
此时客户端正在等待sock.recv(1024)
来自服务器的响应。键入消息(“TEST”说)并在服务器窗口中输入允许代码继续。现在服务器看起来像这样:
$ nc -l 34567
test1TEST
test2
客户:
$ python socktimeout.py
Step 1
Step 2
test1
TEST
Sleep for 3
Sendind Second Message..
Step 1
Step 2
再次键入消息并按Enter键将允许您的程序完成并关闭连接。
请注意,仅当netcat是行缓冲输入时才需要按Enter键,如果您的服务器使用其他进程发送回数据,则不要求在消息后面附加一行(尽管它可能是好的想法,取决于你的协议)。
修改强>
以下是发回另一条消息后的最终服务器状态:
$ nc -l 34567
test1TEST
test2TEST
$
这是客户:
$ python socktimeout.py
Step 1
Step 2
test1
TEST
Sleep for 3
Sendind Second Message..
Step 1
Step 2
test2
TEST
$