Python TCP服务器无法在LAN或WAN上运行?

时间:2014-03-25 16:50:21

标签: python python-3.x tcp

Python TCP服务器无法访问LAN或WAN

好的,所以我使用Python 3编写了一个TCP服务器 它正常工作在Localhost(127.0.0.1)端口1200使用Telnet和客户端程序但是当我尝试从网络上的另一台计算机或从Internet上的另一台计算机它失败 使用客户端或Telnet:\就像没有任何服务器Up 如果你好,请问我是在路由器后面 那么我必须设置类似港口转发或东西的东西吗? 或者我的代码有什么问题? 顺便说一句,我试着关闭我的防火墙。


Well Heres 服务器

import socket
import time
import sys
import Clients

Port = 1200
MaxConnections = 5

try :
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except :

    print("Something Went Wrong Creating The Scoket and Going to exit.")
    sys.exit()

    #Bind on The Connection Port
    sock.bind(("",Port))
    print("")

    #Listen to Connections 
    sock.listen(MaxConnections)
    print("")


while True:
    client,addr = sock.accept()
    Clients.AddClient(client)
    print("")
    rcName = client.recv(1024)
    print(rcName.decode('ascii'),"Connected to Server", addr  , time.ctime(time.time()))

这是我在服务器中导入的Clients.py:

Clients = []



def AddClient (ClientAdress) :
    Clients.append(ClientAdress)

以下是客户

import socket
from socket import *
import urllib
import sys
import os 
import time
import string

serverIp = str(input("Enter The Server Ip Adress : "))
serverPort = int(input("ENter The Server's Port : "))
name = "MyName"

#Creating Sockets
sock = socket (AF_INET,SOCK_STREAM)

try :
        sock.connect((serverIp,serverPort))

except :
    print("Failed to Connect to Server")
    sys.exit

#This Part Sends The Name of The Client to The Serevr

data = name

sock.send(data.encode('ascii'))
print("")
print ("    ----------------------   Connected to Server   ----------------------   ")
while True :
     #Wont Do ANything for Now cuz i Removed The Sending Mesage Part from The Server
     rCData = sock.recv(1024)
     print (rcData)

现在的服务器仅打印已连接客户端的名称及其IP和时间 我注释了为某些问题发送消息的部分内容。 我不认为这是代码的问题,因为它正常工作在localhost上。 无论如何Thabks求助:)

1 个答案:

答案 0 :(得分:0)

我认为你需要在服务器代码中指定服务器的IP地址,以便它绑定到正确的适配器。

HOST = socket.gethostbyname(socket.gethostname())   
s.bind((HOST, Port))