我正在开发一个python程序,一旦启动它将主动侦听传入连接(通过套接字),但也为用户提供启动传出连接的机会。这是我的目标计划的基本描述,我在这里稍微详细一点...... python - stop waiting for input() when a condition (not timer) is met
我仍然没有找到我在上面链接中提出的问题的解决方案。但是,我稍微改变了方向,并且一直在研究这个项目的功能方面。我一直在取得进展,我有一个工作解决方案,用于接收连接请求和发送连接请求的程序。
发送连接请求时,程序将成功连接,但会引发错误...
Unhandled exception in thread started by <function outgoing at 0x00E4D4B0>
Traceback (most recent call last):
File "PATH\program.py", line 27, in outgoing
sc.connect((ip, port))
OSError: [WinError 10022] An invalid argument was supplied
即使抛出此错误,我仍然成功连接到服务器/主机。
这个程序还远没有完成,我知道还有很多改进,但是现在我只想尝试一个工作/无错误的解决方案。
import socket
from _thread import *
ip = ''
host = ''
port = 5555
ss = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
ss.bind((host, port))
except socket.error as e:
print(str(e))
ss.listen(2)
def incoming():
conn, addr = ss.accept()
if conn:
print('################################\nIncoming Connection Established!\n Address = '+addr[0]+':'+str(addr[1]))
def outgoing():
while True:
if ip != '':
try:
sc.connect((ip, port))
break
except error as e:
print(str(e))
break
print("Waiting for a connection...")
start_new_thread(incoming,())
start_new_thread(outgoing,())
ip = input('...Or enter an ip address to initiate the connection.\n')
outgoing()