2014-05-11 84 views
0

我希望客户端程序在发送消息之前等待服务器程序运行。使客户端程序等待服务器程序运行

目前我有这样的代码:

import socket 
s=socket.accept() 
s.connect(("192.168.1.34".8040)) 
f=open("tes.png","rb") 
l=f.read(1024) 
while(1): 
     s.send(l) 
     l.read(1024) 
s.close() 

现在,如果我不运行服务器程序运行客户端程序,我显然得到一个错误说没有发现的路由。

如何以这样的方式改变这个程序,客户端等待服务器来运行,然后发送邮件。

+1

与此代码,你得到一个错误'“模块”对象有没有属性“accept'' – Daniel

回答

0

基于clientserver的传统定义,服务器具有一个公众已知的客户端地址,但客户端没有公知的服务器已知的地址。

已显示的代码看起来是企图客户端和服务器代码的混合物,但该变化则需要使将在用于上述原因,客户端。

您可以简单地让客户端执行以下步骤。

  1. 尝试连接到服务器。
  2. 如果成功,我们就完成并继续与服务器通话。如果失败,等待一段超时(也许1秒?),然后回到步骤1

如果你的问题是,“我如何得到解决的错误客户端抛出,然后重试”时,答案是使用try-except。另外,如果您显示的代码应该是客户端代码,那么正确的第一行是s=socket.socket(),而不是s=socket.accept(),它会引发评论描述的错误。

在Python中工作的客户端 - 服务器代码的一个简单的例子,看看my answer另一个问题。

+0

这是我的坏S = s.connect((主机,端口))没有在键入时注意到它。无论如何,尝试除了为我工作。非常感谢! – shivram