Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用套接字通过web传输数据?_Python_Sockets_Web_Python 2.7 - Fatal编程技术网

Python 如何使用套接字通过web传输数据?

Python 如何使用套接字通过web传输数据?,python,sockets,web,python-2.7,Python,Sockets,Web,Python 2.7,问题 如何创建在web上工作的套接字服务器 这仅仅是一个正确的端口转发问题,还是我必须购买一个域名 如果我需要一个域名,有没有免费的方式来做这件事 背景 我目前正在Windows 7(32位)上使用Python 2.7.3进行一个基本项目 我想使用Python将消息从控制台发送到我朋友的一台计算机。这是非常宝贵的,但它只能在一台机器内工作 在我尝试通过互联网发送信息时,我尝试了几种策略 因为我最终将使用我的Mac作为服务器,所以我使用了端口转发不同的端口。当我这样做时,Python会给出以下错误

问题

如何创建在web上工作的套接字服务器

这仅仅是一个正确的端口转发问题,还是我必须购买一个域名

如果我需要一个域名,有没有免费的方式来做这件事

背景

我目前正在Windows 7(32位)上使用Python 2.7.3进行一个基本项目

我想使用Python将消息从控制台发送到我朋友的一台计算机。这是非常宝贵的,但它只能在一台机器内工作

在我尝试通过互联网发送信息时,我尝试了几种策略

  • 因为我最终将使用我的Mac作为服务器,所以我使用了端口转发不同的端口。当我这样做时,Python会给出以下错误消息:

    Enter the PORT number (1 - 10,000)4235
    Socket Created
    Bind failed. Error Code : 49 Message Can't assign requested address
    
    Traceback (most recent call last):
       File "/Users/BigKids/Desktop/Server v3.py", line 18, in <module>
          sys.exit()
      SystemExit 
    
    Please enter the host's IP >>> 68.***.***.128
    Enter the PORT number (1 - 10,000)2432
    Socket Created
    Bind failed. Error Code : 10049 
    Message The requested address is not valid in its context
    
    Traceback (most recent call last):
      File "D:\Python Programs\Sockets\First Project\Server v3.py", line 19, in   <module>
        sys.exit()
      SystemExit
    

  • 您的示例代码应该能够在Internet上工作。从编程的角度来看,在局域网上或互联网上工作的东西没有太大区别

    但是,如果要通过Internet连接到套接字,则侦听套接字必须绑定到可路由的公共IP地址

    如果你朋友的电脑只是另一个局域网上的一台电脑,它很可能没有公共IP地址,因此你无法连接


    一种解决方案是制作类似的东西,并在Internet服务器(具有公共IP地址)上运行
    server.py
    。您和您的朋友都将运行
    client.py

    您的示例代码应该能够在Internet上运行。从编程的角度来看,在局域网上或互联网上工作的东西没有太大区别

    但是,如果要通过Internet连接到套接字,则侦听套接字必须绑定到可路由的公共IP地址

    如果你朋友的电脑只是另一个局域网上的一台电脑,它很可能没有公共IP地址,因此你无法连接


    一种解决方案是制作类似的东西,并在Internet服务器(具有公共IP地址)上运行
    server.py
    。你和你的朋友都会运行
    client.py

    你的局域网是互联网的一个子集。同样的原则也适用-你需要一个连接到的IP和监听/发送数据的端口。你的局域网是互联网的一个子集。同样的原则也适用-你需要一个IP来连接,需要一个端口来监听/发送数据。对不起,我指的是xxmbanexx在示例中给出的代码:@luc so。。。我需要买一个域名还是有更便宜的方法来做同样的事情?你需要一个带有公共IP的服务器。在hostprovider购买服务器是最简单的方法。您的互联网提供商可能也允许这样做。对不起,我指的是xxmbanexx在示例中给出的代码:@lucso。。。我需要买一个域名还是有更便宜的方法来做同样的事情?你需要一个带有公共IP的服务器。在hostprovider购买服务器是最简单的方法。您的Internet提供商也可能允许这样做。
    HOST = raw_input("Please enter the host's IP >>> ")
    
    PORT = input ("Enter the PORT number (1 - 10,000)")
    
    
    
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM )
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    print "Socket Created"
    
    try:
        s.bind((HOST, PORT))
    except socket.error, msg:
        print "Bind failed. Error Code : " + str(msg[0]) + " Message " + str(msg[1])
        sys.exit()