我使用python创建了一个简单的客户机和一个服务器。为了创建我的服务器,我做了一个端口转发。但我有一个问题,我没有成功地解决,事实上,无论服务器是在线或离线。我的插座给了我成功的信息。这种失败从何而来?你知道吗
这是我在客户端的代码:
import socket
from threading import Thread
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
client_socket.connect(("89.139.105.181", 8350))
print "Client connection success"
except socket.error:
print "Client error"
def send_to_server():
msg = raw_input("Client:")
client_socket.send(msg)
def recv_from_server():
response_server = client_socket.recv(1024)
print response_server
def main():
while True:
send_thread = Thread(target=send_to_server,)
recv_thread = Thread(target=recv_from_server,)
send_thread.start()
recv_thread.start()
send_thread.join()
recv_thread.join()
if __name__ == "__main__":
main()
当您使用socket连接到中间节点时,socket会将您的请求转发到同一网络中的目标节点,即使目标节点关闭,到中间节点的连接也会成功。你知道吗
因此,由于您的客户机的
client_socket.connect()
不会被告知从中间节点到目标节点的套接字连接是否成功,因此它总是在成功连接到中间节点时返回success。你知道吗但是要想知道你是否真的连接到了目标节点,一个简单的方法是在发送请求后的指定时间内检查你是否真的收到了预期的响应(假设客户端发送的每个请求,服务器都会发送一些响应)。你知道吗
相关问题 更多 >
编程相关推荐