读书人

请大家帮小弟我看下这代码有什么错想

发布时间: 2013-03-26 09:54:34 作者: rapoo

请大家帮我看下这代码有什么错,想要实现这样的功能“服务器上监听一个 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'))

读书人网 >perl python

热点推荐