使用python在同一台机器上模拟可靠的发送器和接收器

时间:2014-04-12 20:24:19

标签: python sockets python-2.7

python的新手,我正在尝试使用python 2-7实现发送器和接收器,我得到了或多或少的代码,但有些东西仍然逃避我,我无法找到解释这很简单:

while True:
      try:
      #...
      except:
          raise ValueError

我明白这是一个执行try代码的while循环,直到异常发生,然后执行except下的代码,但是什么是ValueError?

另一件事,在try块我有这个:

message, address = self.receive()

其中:

def receive(self):
    return self.s.recvfrom(4096)

据我所知,这是从套接字接收数据,返回值是一对(字符串,地址),其中string是表示接收数据的字符串,address是发送数据的套接字的地址, 但是我得到的不是这条线应该立即执行而处理器移动到下一条线路,所以如果在执行此线路的时刻没有收到数据包,我们如何捕获数据包?是否有某种缓冲区可以保存收到的数据包,直到该行执行或者这是如何工作的?

感谢您的耐心

1 个答案:

答案 0 :(得分:0)

第一个问题:

while True:  # an idiomatic infinite loop
    try:     # set up for try/except
        # do some stuff with sockets
    except:  # catch any exception
        raise ValueError   # catch-all error to say "there was a problem with that value"

第二个问题:

是的,有一个缓冲区。 recvfrom(4096)一次从该缓冲区读取最多4096个字节。请注意,第一个参数in the documentation的名称是 bufsize