Python套接字无法连接到Windows服务器

Python套接字无法连接到Windows服务器

我正在使用 Python 中的套接字库,并希望将客户端(我的计算机)连接到服务器(AWS EC2 Windows 实例)。但客户端总是给出错误:-“TimeoutError:[WinError 10060] 连接失败,因为连接的主机未能响应”

我已经实施的解决方案:-

  1. 编辑安全组以启用所需的传入端口。
  2. 为 EC2 实例分配静态 IP
  3. 重启 EC2
  4. 在 EC2 实例内从 Windows 防火墙启用传入端口

当我转到任务管理器>>性能>>资源监视器时,我可以看到端口是打开的:-

  • 网络活动

图像 PID 地址 发送 (B/秒) 接收 (B/秒) 总计 (B/秒)

pythonw.exe 1456 EC2AMAZ-XXXXXX 627 647 1,274

  • TCP 连接

图像 PID 本地地址本地端口远程地址远程端口数据包丢失 (%) 延迟 (ms)

pythonw.exe 1456 IPv4 环回 50770 IPv4 环回 50769 0 0

  • 监听端口

图像 PID 地址 端口 协议 防火墙状态

pythonw.exe 1456 IPv4 环回 3469 TCP 允许,不受限制

但我仍然无法在所需端口 (telnet PUBLIC_IP PORT) 上 ping EC2。因此客户端无法通过套接字连接。


服务器端

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
port = 3469

s.bind(('localhost', port))
print ('Socket binded to port 3469')

s.listen(1)
print ('socket is listening')





while True:

    try:

        print('waiting for connection')
        connection, client_address = s.accept()
        print ('Got connection from ', client_address)

        data = connection.recv(16)
        print('received {!r}'.format(data))

        connection.close(); s.close();break;

    except KeyboardInterrupt:
        connection.close(); s.close();break;

客户端.py

import socket 


s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)


port = 3469


s.connect(('EC2-PUBLIC-IP-ADDRESS-OF-EC2-HERE', port))

z = 'Hello World'


s.sendall(z.encode())

s.close()

当服务器和客户端都在本地主机上时,此代码可以完美运行。

不知道缺少了什么。请帮忙。

感谢致敬

答案1

s.bind(('localhost',端口))

您似乎只监听localhost环回地址,而无法在公共互联网上使用。

相关内容