我开始学习计算机网络,我尝试在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)
我之前遇到过这个问题,而且从我记忆中来看,我还没有设法解决这个问题。 我试过端口转发(至少我认为我做对了) 我希望你能帮助我 提前谢谢你:)
答案 0 :(得分:0)
您的问题很可能与网络有关。您发布的IP是所谓的可路由IP,即暴露于互联网的IP。它通常被分配到ISP提供的调制解调器或路由器的WAN端。像您的PC这样的机器通常会在网络设备的LAN端生活,并且可能会被分配一个不可路由的IP,这些都无法从互联网上看到。
当您转到显示IP的网站时,它会显示您的可路由IP,而不是网络设备分配给您的计算机的IP。要查看该地址,您可以在Windows上的命令窗口中键入“ipconfig”,或者在linux和mac上的终端shell中键入“ifconfig”。您应该在该输出中看到一个或多个包含IP地址的接口的列表。一个可能具有127.0.0.1的地址,该地址等于localhost,并且被称为您的环回地址。您可能会看到以10.或192开头的另一个。该地址可能是网络设备分配给您的地址。您可以尝试该地址,看看您的程序是否有效。