docker下的socket端口配置

socket 绑定IP和端口到套接字

win10本地测试,通过 http://127.0.0.1:8800/
可以访问

image.png

linux系统的docker环境下启动后,
无法通过linux服务器的IP地址+端口: 8800进行访问

# -*- coding: utf-8 -*-
"""
Python 网络编程
套接字的作用
    Socket 又叫做 "套接字",
    应用程序通常通过 "套接字" 向网络发出请求或者应答网络请求
    使主机间或者一套计算机上的进程间可以通讯

Socket 对象(内建) 方法
    1. s.bind() 函数 : 服务端套接字
        绑定地址 (host, port) 到套接字
        在 AF_INET 下, 以元组(host, port)的形式表示地址

    2. s.accept()
        被动接受 TCP 客户端连接
        (阻塞式) 等待连接的到来

    公共用途的套接字函数
    3. s.recv()
        接收 TCP 数据
        数据返回形式: 字符串
        bufsize: 指定要接收的最大数据量
        flag提供有关消息的其他信息,通常可以忽略

"""

import socket


def SocketFlow():
    """
    socket 的流程
        s = socket.socket() 创建套接字
        s.bind() 绑定地址到套接字
        s.accept() 等待TCP连接的到来 【被动】
        s.recv() 接收TCP数据, 数据返回形式 为 字符串 string
        s.send() 发送TCP 数据 将 string 中的数据 发送到连接的套接字
            返回值是要发送的字节数量, 该数量可能小于 string 的字节大小
    """
    sock = socket.socket()  # doc1.创建套接字
    # sock.bind(("127.0.0.1", 8800))  # doc2. s.bind()函数作为服务端套接字,绑定地址 (host, port) 到套接字
    sock.bind(("0.0.0.0", 8005))  # doc2. s.bind()函数作为服务端套接字,绑定地址 (host, port) 到套接字
    sock.listen(5)


    while 1:
        print("server wating......")
        conn, addr = sock.accept()  # doc3. s.accept() 函数 被动接受 TCP 客户端连接, (阻塞式) 等待连接的到来
        data = conn.recv(1024)  # doc4. s.s.recv 接收 TCP数
        print("data", data)
        conn.send(b"hello luffycity!")  # doc45. 发送 TCP 数据
        conn.close()


SocketFlow()



image.png

请问需要修改什么,才可以在docker下启动后,通过地址IP+端口: 8800可以访问
阅读 5.1k
1 个回答

docker run 的时候你没有加 -p 参数暴露端口?

防火墙放行了相关端口了么?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题