当前位置: 首页 > news >正文

python的socket通信中,如何设置可以让两台主机通过外网访问?


要让两台主机通过外网进行Socket通信,需要在网络设置和代码实现两个方面进行相应的配置。下面是具体的步骤:

确认网络环境:首先要确保两台主机都能够通过外网访问。可以通过ping命令或者telnet命令来测试两台主机之间是否可以互相访问。

确定外网IP地址:为了使两台主机能够互相访问,需要知道它们在外网中的IP地址。可以通过百度、谷歌等搜索引擎搜索"我的IP",获取本机在外网中的IP地址。对于服务器端,如果它有一个域名,可以通过ping命令获取到域名解析出来的IP地址。

端口映射:如果两台主机在同一内网中,需要将本地端口映射到公网IP上,使得外网可以访问到内网主机的服务。可以在路由器中进行端口映射设置,将路由器的公网IP地址和端口映射到内网中的某台主机的IP地址和端口。

编写Python Socket程序:编写服务器端和客户端程序,使用公网IP地址和端口号进行连接。在代码中需要使用socket.bind()函数绑定服务器的IP地址和端口号,以及使用socket.connect()函数连接客户端的IP地址和端口号。

以下是一个简单的Python Socket程序示例:

服务器端代码:

 import socket

HOST = '0.0.0.0' # 监听所有地址
PORT = 8888

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)

conn, addr = s.accept()
print('Connected by', addr)
while True:
    data = conn.recv(1024)
    if not data:
        break
    conn.sendall(data)
conn.close()

客户端代码:

import socket

HOST = '服务器公网IP地址'
PORT = 8888

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.sendall(b'Hello, world')
data = s.recv(1024)
s.close()

print('Received', repr(data))

http://www.lryc.cn/news/14532.html

相关文章:

  • 检测数据的方法(回顾)
  • 比特数据结构与算法(第三章_上)栈的概念和实现(力扣:20. 有效的括号)
  • JVM13 类的生命周期
  • Docker网络模式解析
  • 游山城重庆
  • Vuex的创建和简单使用
  • Arduino IDE搭建Heltec开发板开发环境
  • Using the GNU Compiler Collection 目录翻译
  • 使用 OpenCV for Android 进行图像特征检测
  • chatGPT笔记
  • 这么好的政策和创新基地,年轻人有梦想你就来
  • 【Kubernetes】【十九】安全认证
  • Apache Flink 实时计算在美的多业务场景下的应用与实践
  • 27 pandas 数据透视
  • 1.2 学习环境准备
  • Http1.0协议常识
  • “终于懂了” 系列:组件化框架 ARouter 完全解析(三)AGP/Transform/ASM—动态代码注入
  • 传闻腾讯引进Quest 2?我觉得可行性很低
  • 【数据集】CMIP6气候模式数据下载
  • 华为OD机试 - 最长的元音字符串 | 机试题算法思路 【2023】
  • 浅谈c++引用
  • 2023什么是分销商城?怎么搭建分销商城
  • 408数据结构考点总结
  • 虹科分享 | 网络流量监控 | 你的数据能告诉你什么:解读网络可见性的4种数据类型
  • SpringBoot日志框架使用详解
  • 剑指offer-消失的数字、数组中出现的次数
  • axios请求配置baseURL选项
  • 风储VSG-基于虚拟同步发电机的风储并网系统MATLAB仿真
  • vim常用命令
  • 华为OD机试 - 最差产品奖 | 机试题算法思路 【2023】