首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

请大家帮小弟我看下这代码有什么错,想要实现这样的功能“服务器上监听一个 UDP 端口,在收到 UDP 数据包后把源地址发回去”

2013-03-26 
请大家帮我看下这代码有什么错,想要实现这样的功能“服务器上监听一个 UDP 端口,在收到 UDP 数据包后把源地

请大家帮我看下这代码有什么错,想要实现这样的功能“服务器上监听一个 UDP 端口,在收到 UDP 数据包后把源地址发回去”
脚本源码udpaddr.py :


import sys
import time
import socket
 
def main(port):
  s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  s.bind(('', port))
  try:
    while True:
      data, addr = s.recvfrom(4096)
      back = 'Your address is %r\n' % (addr,)
      s.sendto(back.encode(), addr)
      print(time.strftime('%Y-%m-%d %H:%M:%S'), addr, 'just sent us a message:', data.decode('utf-8', 'replace'), end='')
  except KeyboardInterrupt:
    print()
 
if __name__ == '__main__':
  try:
    main(int(sys.argv[1]))
  except (ValueError, IndexError):
    sys.exit('which port to listen?')

用 “python updaddr.py” 运行报错如下:

line@Excalibur:~$ python udpaddr.py 
  File "udpaddr.py", line 13
    print(time.strftime('%Y-%m-%d %H:%M:%S'), addr, 'just sent us a message:', data.decode('utf-8', 'replace'), end='')
                                                                                                                   ^
SyntaxError: invalid syntax

源码出处:http://lilydjwg.is-programmer.com/2012/8/28/udp-hole-punching-experiment.35350.html

[解决办法]
请用python3运行。
[解决办法]
这里错了:
print(time.strftime('%Y-%m-%d %H:%M:%S'), addr, 'just sent us a message:', data.decode('utf-8', 'replace'), end='')
-》
直接不要吧:print(time.strftime('%Y-%m-%d %H:%M:%S'), addr, 'just sent us a message:', data.decode('utf-8', 'replace'))

热点排行