Python-无法连接到我的IP

时间:2016-09-14 18:28:36

标签: python sockets networking ip

我开始学习计算机网络,我尝试在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)

我之前遇到过这个问题,而且从我记忆中来看,我还没有设法解决这个问题。 我试过端口转发(至少我认为我做对了) 我希望你能帮助我 提前谢谢你:)

1 个答案:

答案 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开头的另一个。该地址可能是网络设备分配给您的地址。您可以尝试该地址,看看您的程序是否有效。