繁体   English   中英

批处理文件中的python udp套接字

[英]python udp socket from batch-file

我有一个简单的代码将UDP数据包发送到UDP服务器。 它可以在我的Linux Ubuntu计算机上使用。 它也可以在通过PythonWin或PythonIDE运行python 2.6.6的Windows 7计算机上使用,但是当尝试从命令shell或批处理文件运行时,它不起作用。

我写

[full patch]\python.exe [full path]\cl.py

并且程序运行,打印语句起作用,但是没有发送UDP数据包。 (已在Windows计算机上用WireShark检查)没有其他错误。

从命令提示符或批处理文件运行是否需要特别考虑?

#!/usr/bin/python
import socket

port = 12345
ip = "10.30.5.70"
data = "Hello World"

UDPSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
UDPSock.sendto(data, (ip,port))
print "done."

在Windows中,我非常确定您不需要包括“ python.exe”甚至“ python”,您只需输入python脚本的名称,例如“ [full path] \\ cl.py”,这对我有用,但是我有Python 2.7.5。

我发现与运行cmd(命令外壳程序)特别不同的是,错误不会像您期望的那样回显到控制台。 很难解释,但是如果要键入:

cl.py> log.txt

如果发生错误,python通常会返回类似(任何随机的旧错误)的信息:

追溯(最近一次呼叫最近):文件“”,第1行,在ss中NameError:未定义名称“ s”

log.txt不会将错误附加到文件中。 但是任何在python中正常打印的内容都将附加到该文件中。 但是此信息不相关。 :\\

希望你能正常工作

我注意到,当运行python -v cl.py时,脚本起作用了。

因此,我在脚本结尾处引入了延迟。

import time # in beginning of script 
# my socket stuff 
time.sleep(1.0) # in the end of script and the script works fine.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM