繁体   English   中英

Python:如何在不同的网络上连接套接字

[英]Python : How to connect socket on different network

我已经开始学习套接字编程,而我面临的问题是。 在两个不同的网络上时,我无法连接套接字(具体来说:我正在使用Web-host和Cgi编程来创建python套接字服务器,我的目标是使用桌面客户​​端python应用程序连接到该套接字)

我的服务器Coad:位置Public_html / cgi-bin / serverSocket.py

#!/usr/bin/python
print "Content-type: text/html\n\n";

import cgitb
import socket


cgitb.enable()

def main():
    host = 'localhost'
    port = 8111

    s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    try:
        s.bind((host,port))
    except socket.error as e:
        print(str(e))

    s.listen(10)
    c,addr = s.accept()
    print("Connection From : " + str(addr))
    while True:
        data = c.recv(1024)
        if not data:
            break
        print ("From Connected user : " + str(data.decode()))
        data =str(data.decode()).upper()
        print ("sending :" + str(data))

        c.send(data.encode())

if __name__ == '__main__':
    main()

和客户端程序: 在我的本地计算机上的位置C:/台式机

#!/usr/bin/python
print "Content-type: text/html\n\n";


#Client Socket Program

import socket

def main():
    host = 'www.mywebsite.com'
    port = 8111

    s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)    
    try:
        s.connect((host,port))
    except socket.error as e:
        print(str(e))

    message=input("-> ")
    while message != 'q':

        s.send(message.encode())
        print("Sent Message")
        data=s.recv(1024)
        print('Recieved from server :',  str (data.decode()))
        message=input("->")
    s.close()


if __name__ == '__main__':
    main()

| 遇到的错误是:[WinError 10060] | | Python Server用途:Python 2.6.6 | | Python客户端:python 3.4 |

在同一系统上使用This时(即:本地主机作为服务器和客户端正常工作)

PS:如果有任何教程,也可以链接,如果必须进行配置,也建议一些配置。

Python 2和3处理套接字的方式不同! 例如,在这里看到这个问题 作为快速解决方法,您可以做的是将客户端起始行更改为"#!/usr/bin/env python2.7"以强制客户端也使用python 2,这应该可以解决您的问题。

如果您希望它们彼此访问,请使用公共IP。 公共IP地址 )您还需要进行端口转发(每个路由器都不同,因此我无法解释,请查一下)。 否则,您想访问的端口将无法从其他网络访问。 当您进行端口转发时,便可以访问您的“公共IP地址”上的端口。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM