美文网首页
解决 s.connect((host, port)) Timeo

解决 s.connect((host, port)) Timeo

作者: 思想永不平凡 | 来源:发表于2020-03-08 20:40 被阅读0次

    直接进入正题。



    今天在进行一个socket编程时,遇到了如题这样的问题。

    image.png

    这个问题很常见,有的是爬虫方面的,五花八门的,查了一圈发现没有解决我的问题的内容,接下来就分享下我遇到的问题和我的解决方案吧。

    问题背景

    环境:win10,Pycharm,python

    今天在进行socket编程时,遇到上图的问题。
    我需要在本地客户端与服务器端建立通信,简化后的情景如下:

    服务器端程序:

    # -*- coding: utf-8 -*-
    
    import socket
    
    hostname = socket.gethostname()
    host = socket.gethostbyname(hostname)
    # host = 服务器内网ip
    port = 8080
    # 端口
    web = socket.socket()
    web.bind((host, port))
    web.listen(5)
    print("start")
    while True:
        conn, addr = web.accept()
        data = conn.recv(1024)
        print(data)
        conn.sendall(b'hello')
        conn.close()
    

    客户端程序:

    # -*- coding: utf-8 -*-
    
    import socket
    
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    host = "公网ip"
    # host = 服务器公网ip
    port = 8080
    # 端口
    s.connect((host, port))
    
    send_data = input("input:")
    s.send(send_data.encode())
    rec_data = s.recv(1024).decode()
    print("close scoket", rec_data)
    s.close()
    
    

    先运行服务器端程序(使用Pycharm ssh连接到服务器):

    start
    
    

    运行客户端程序(本地),一会儿出现:

    image.png

    首先查看腾讯云安全组:

    image.png

    该端口是开放的,一切正常。

    那是什么原因呢?我在的博客中写过,Ubuntu 服务器利用Apache 2搭建一个简单的网站。在安装完Apache 2后,有一步是在UFW上允许Apache,会不会是防火墙没有开放端口呢?

    ssh连接到服务器
    输入:

    sudo ufw status
    
    image.png

    发现Apache已经在运行中,但是服务器UFW并没有允许预期端口8080,此时,我们开放8080端口。

    sudo ufw allow 8080
    
    image.png

    再次查看UFW状态:

    image.png

    可以看到8080端口已经开放了。

    再来试试之前的程序。

    服务端:

    image.png

    客户端:

    image.png

    类似的,实现多个客户端与服务端通信等等其他功能也可以相继展开了。

    对于UFW,开启和关闭防火墙:

    sudo ufw enable|disable
    

    查看防火墙状态

    sudo ufw status
    

    开启和禁用端口如下:

    sudo ufw allow|deny [service]
    



    至此,我的问题解决了,标题问题出现的原因可能有很多,这里是我个人遇到我的问题,以及自己的解决方案,解决了自己的问题,对于同样的问题有可能就不适用了。

    相关文章

      网友评论

          本文标题:解决 s.connect((host, port)) Timeo

          本文链接:https://www.haomeiwen.com/subject/vsdjdhtx.html