【发布时间】:2017-07-01 16:20:39
【问题描述】:
我开始编写一个简单的服务器和客户端脚本。我在本地网络上测试了脚本,它运行良好:服务器将打开,并等待客户端连接。一旦客户端连接,它就会让我继续。
然后我决定通过互联网对其进行测试,这就是问题开始发生的原因。我在 Ubuntu 上运行服务器,在 Windows 机器上运行客户端。
服务器连接代码:
import socket
import sys
#Create a socket for connection
def socket_create():
try:
global host
global port
global s
host = ''
port = 5698
s = socket.socket()
print("Socket created.")
except socket.error as msg:
print("Socket creation error: " + str(msg))
#Bind the created socket to a port, sleep for conn
def socket_bind():
try:
global host
global port
global s
s.bind((host, port))
print("Waiting for connection")
s.listen(5)
except socket.error as msg:
print("SOcket binding error: " + str(msg) + "\n Retrying...")
socket_bind()
#Estabilish Connection with client
def socket_accept():
conn, adress = s.accept()
print("Connection has been estabilished | " + "IP " + adress[0] + " | Port " + str(adress[1]))
send_command(conn)
conn.close()
客户端连接代码:
import os
import socket
import subprocess
# Create a socket
def socket_create():
try:
global host
global port
global s
host = 'My Internet IP'
port = 5987
s = socket.socket()
except socket.error as msg:
print("Socket creation error: " + str(msg))
# Connect to a remote socket
def socket_connect():
try:
global host
global port
global s
s.connect((host, port))
except socket.error as msg:
print("Socket connection error: " + str(msg))
还有错误:
[Errno 10060] 连接尝试失败,因为连接方在一段时间后没有正确响应,或者连接失败,因为连接的主机没有响应
我永远不会从服务器获得“连接已建立”的打印信息,而且我会收到该错误。
任何人都可以看到任何可能导致代码出现问题的内容吗?
端口转发路由器后,我是否需要在 Ubuntu 本身上进行任何其他配置?我应该打开的端口是TCP,对吧?
在路由器上打开端口后,如果我使用“http://www.canyouseeme.org/”之类的服务,它会立即显示端口已打开,还是仅在我正在运行服务器并等待连接?
【问题讨论】:
-
您应该用您找到的解决方案来回答您自己的问题。其他人可能会遇到同样的问题。
-
@Malt 我用修复的小描述更新了这个问题。一旦我有时间,我会用一个关于如何使用端口映射器的小教程来正确地回答这个问题。
标签: python-3.x sockets network-programming