我已經在Python 2.7.x中創建了一個基本的客戶端服務器套接字程序,即使在不同的機器上,它在同一個網絡上也運行得很好,但是當我在不同的網絡上運行服務器和客戶端時(服務器在朋友的網絡上, )它不會返回任何錯誤並繼續等待。我只是不明白如何調試代碼。我通過端口80上的所有服務來使用端口80.我還在兩臺機器上的端口80上完成了端口轉發。通過互聯網在Python中的套接字連接?
我的代碼如下:
client.py
import socket
s = socket.socket()
host = '103.47.59.130'
port = 80
s.connect((host, port))
while True:
print "From Server: ", s.recv(1024) #This gets printed after sometime
s.send(raw_input("Client please type: "))
s.close()
server.py
import socket
s = socket.socket() # Create a socket object
host = '192.168.0.104' #private ip address of machine running fedora
port = 80
s.bind((host, port))
s.listen(5)
c, addr = s.accept()
print 'Got connection from', addr #this line never gets printed
while True:
c.send(raw_input("Server please type: "))
print "From Client: ", c.recv(1024)
c.close()
有時候輸出**從服務器**,但不列入來回發送任何消息。
PS:我已經搜索了Stack Overflow,但是我找不到任何相關的東西。
也許防火牆? –
我試過在Windows上關閉防火牆。我們有辦法在Fedora上關閉它嗎? –
防火牆或NAT?儘管Portforwarding應該修復NAT。可能是超時錯誤,請參閱http://stackoverflow.com/a/2721734/5276801解決該問題 – RandomHash