【发布时间】:2014-03-17 08:15:54
【问题描述】:
我必须以一个完整的免责声明作为开头,即我还处于 Python 开发的早期阶段
我编写了一个简单的 python 程序,它等待通过端口 20000 与本地 IP 地址的套接字连接。当它获得连接时,它会使用 win32api 弹出消息警报。
#tcpintercomserver.py
import socket
import sys
import win32api
ip = socket.gethostbyname(socket.gethostname())
#socket creation
sock=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#Binding
server_address = (ip, 20000)
sock.bind(server_address)
print server_address
#Listen
sock.listen(1)
while True:
# Wait for a connection
connection, client_address = sock.accept()
win32api.MessageBox(0,'MessageText','Titletext', 0x00001000)
# Close Connection
connection.close()
我还有一个简单连接到套接字的配对客户端程序。该脚本接受您尝试访问的主机的参数(DNS 名称或 IP 地址)
#tcpintercomcli.py
import socket
import sys
# Create a TCP/IP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Connect the socket to the port where the server is listening
server_address = (sys.argv[1], 20000)
sock.connect(server_address)
这一切都作为脚本运行良好。然后我使用 CX_Freeze 将它们转换为可执行文件。两者都像脚本一样运行。
现在我已经获取了服务器脚本,并使用 srvany.exe 将其连接到服务,并在 windows 中使用了 SC 命令。
我使用 SC create "intercom" binPath="C:\dist\srvany.exe" 设置服务
在注册表中的对讲服务键下,我添加了参数键,并在其中将 Application 设置为字符串值 c:\dist\tcpintercomserver.exe
然后我执行“net start intercom”,服务启动成功,tcpintercomserver.exe 被列为正在运行的进程。但是,当我运行 tcpintercomcli.py 或 tcpintercomcli.exe 时,没有出现警报。
我很困惑...CX_Freeze 进程是否有什么东西可能会搞砸?
【问题讨论】:
标签: python windows sockets service tcp