【发布时间】:2016-09-14 18:28:35
【问题描述】:
我开始学习计算机网络,并尝试在 Python 中使用套接字。 在 youtube 视频的帮助下,我在服务器和客户端之间制作了一个非常简单的聊天程序。 当我尝试将客户端与“localhost”连接时,它按我想要的方式工作。但是当我尝试使用 IP 地址(我在 findmyip.org 上找到的,例如 12.123.12.123)时,它只是没有显示任何连接迹象。 服务器是:
import socket
import sys
def socket_create():
try:
global host
global port
global s
host = ''
port = 9998
s = socket.socket()
except socket.error as msg:
print "socket creation error bluhbluh"
print "socket created"
def socket_bind():
try:
global host
global port
global s
print "Binding socket to port"
s.bind((host,port))
s.listen(5)
except socket.error as msk:
print "socket binding error"
socket_bind()
def socket_accept():
conn,address = s.accept()
print "connection has been established"
print address[0]
send_msg(conn)
conn.close()
def send_msg(conn):
while 1:
mess=raw_input()
if mess == "quit":
conn.send(mess)
conn.close()
s.close()
sys.exit()
if len(mess)>0:
conn.send(mess)
resp=conn.recv(1024)
print resp
def main():
socket_create()
socket_bind()
socket_accept()
main()
客户是:
import socket
import os
import sys
s = socket.socket()
host = '12.123.12.123' #replace with 'localhost' for a working version! :D
port = 9998
s.connect((host,port))
while 1:
data = s.recv(1024)
print data
if data=="quit":
s.close()
else:
mess=raw_input()
s.send(mess)
我之前遇到过这个问题,据我所知,我当时也没有设法解决它.. 我尝试了端口转发(至少我认为我做对了) 我希望你能帮助我 提前谢谢你:)
【问题讨论】:
-
"我尝试了端口转发(至少我认为我做对了)" - 从您的网络内部连接到外部地址并被转发回来,需要特殊支持在防火墙/路由器上。它通常被称为“发夹 NAT”或“环回 NAT”。如果您有基本的家用设备,它可能根本不支持这样做。
标签: python sockets networking ip