社区首页 >问答首页 >有没有可能让3台服务器都在一个端口(比如端口48000)上使用Python套接字相互通信

有没有可能让3台服务器都在一个端口(比如端口48000)上使用Python套接字相互通信
EN

Stack Overflow用户
提问于 2021-04-22 13:30:24
回答 1查看 56关注 0票数 1

类似于服务器可以使用单个端口连接多个客户端,我希望此服务器也能够使用此相同端口连接到多个其他服务器,而不必在不同端口上有单独的TCP客户端套接字。

例如:服务器1、2和3都使用单个端口(例如48000)相互通信,而不是每个服务器都托管48000上的TCP套接字,并且还必须在两个额外的端口上创建另外两个TCP客户端套接字,以便与其他两个服务器通信。

这样做的原因是,分布式应用程序在理论上可以扩展到超过65k的服务器,可能所有服务器都相互连接,这将导致每个服务器耗尽可用于创建客户端套接字的端口。

更具体地说,使用Python和套接字库可以做到这一点吗?

这段代码不是字面上的,只是代表了我的程序试图实现的目标。

代码语言:javascript
代码运行次数:0
复制
    self.tcp_socket.bind(("", 48000))
    # Server thread
    self.tcp_socket.listen()
    client, address = self.tcp_socket.accept()

    # Connecting to other server as client
    self.tcp_socket.connect((192.168.1.10, 48000))

当尝试使用已经用作服务器的套接字连接到服务器(侦听、接受)时,我收到错误消息"WinError 10022 An invalid argument is supplied“。

它似乎绑定到单个端口,我的程序只能充当客户端(连接到单个服务器),或者作为服务器(使用多线程连接多个客户端),但不能两者兼而有之。

简而言之,我希望许多服务器通过TCP相互连接,所有通信都使用单个端口。

EN

回答 1

Stack Overflow用户

发布于 2021-04-22 14:02:21

编辑: windows不支持同一台计算机上的多个服务器(请参阅评论)

在本例中,您只需定义另一个套接字变量,例如:"connection",而不是使用定义为server-socket的同一变量。但你还必须定义两个函数,然后在上面运行线程,否则它不会工作。例如:

代码语言:javascript
代码运行次数:0
复制
from threading import Thread
def bind():
    tcp_socket.bind(("", 4444))
    # Server thread
    tcp_socket.listen()
    client, address = tcp_socket.accept()

def connect():
   connection = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
   connection.connect((192.168.1.10, 4444))

t1 = Thread(target=bind)
t2 = Thread(target=connect)
t1.start()
t2.start()

PS:我建议使用较低的端口号,因为这是有限制的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67214281

复制
相关文章
mybatis的逆向工程_mybatis逆向工程多表查询
逆向工程字面意思就是反向生成工程,和hibernate一样mybatis也有自己的逆向工程工具,hibernate的逆向生成我没有做过,不过我猜大概都已样,再说,hibernate的现在使用很少了,到了使用的时候再去用吧,使用逆向工程时,需要注意的是表之间的关系无法映射出来!也就是说mybatis的逆向工程生成的都是单表操作, 1:mybatis逆向工程开发文档:
全栈程序员站长
2022/09/24
6760
mybatis的逆向工程_mybatis逆向工程多表查询
mybatis逆向工程
就是我们可以根据数据库表,自动生成javabean,mapper接口和其对应的maaper.xml文件。
西西嘛呦
2020/08/26
5430
mybatis逆向工程
逆向工程——栈[三]
栈是计算机科学里最重要的且最基础的数据结构之一。 从技术上讲,栈就是CPU寄存器里面的某个指针所指向的一片内存区域。这里所说的某个指针通常位于x86/x64平台的ESP寄存器/RSP寄存器,以及ARM平台的SP寄存器。 操作栈最常见的指令是PUSH和POP,在 x86 和 ARM Thumb 模式的指令集里都有这两条指令。 PUSH指令会对ESP/RSP/SP寄存器的值进行减法运算,使之减去4(32位)或8(64位),然后将操作数写到上述寄存器里的指针所指向的内存中。 POP指令是PUSH的逆操作:他先从栈指针(Stack Pionter,上面三个寄存器之一)指向的内存中读取数据,用以备用(通常是写到其他寄存器里面),然后再将栈指针的数值加上4或8. 在分配栈的空间之后,栈指针,即Stack Pointer所指向的地址是栈的底部。PUSH将减少栈指针的数值,而POP会增加它的数值。栈的“底”实际上使用的是整个栈的最低地址,即是整个栈的启始内存地址。 ARM的栈分为递增栈和递减栈。递减栈(descending stack)的首地址是栈的最高地址,栈向低地址增长,栈指针的值随栈的增长而减少,如STMFA/LMDFA、STMFD/LDMFD、STMED、LDMEA等指令,都是递增栈的操作指令。
HACK学习
2019/08/05
8940
mybatis逆向工程
mysql-connector-java-5.1.28-bin.jarjava连接mysql包
用户10325771
2023/03/14
3980
mybatis逆向工程
mybatis逆向工程
mybatis逆向工程的作用是根据数据库里的表结构自动生成实体类,映射文件,和接口。 和hibernate的自动建表相反。
Mshu
2018/10/31
1.1K0
逆向工程----MBG
逆向工程 逆向工程概念 MBG概念 步骤1: 导入相关依赖 引入mybatis-generator.xml配置,建议从官网文档粘贴后,进行配置修改 使用代码运行,也可以用命令行 效果 小tips 使用插件方式启动mbg,需要在build标签中进行设置,以及引入最开始给的插件依赖 MBG的具体使用看这篇文章 逆向工程概念 ---- MBG概念 ---- 步骤1: 导入相关依赖 <!--mybatis的逆向工程--> <dependency> <
大忽悠爱学习
2021/11/15
3930
APK逆向工程
APK(android Application PacKage)文件是安卓app的安装文件,其实就是一个zip或rar压缩包,把apk后缀改为zip,即可解压得到一堆安卓相关文件。
李小白是一只喵
2020/11/24
1.2K0
APK逆向工程
漫谈逆向工程
逆向工程,原名Reverse Engineering,简称RE。关于其书面介绍我就不复制粘贴百度百科了,简而言之就是从发布的产品中反向分析其程序逻辑和算法——基于各种目的。
evilpan
2023/02/12
1.1K0
漫谈逆向工程
mybatis逆向工程
三、点击maven,在点击Plugins,找到mybatis-generator:generate 双击即可运行!
栖西
2023/10/17
2270
mybatis逆向工程
Android逆向工程
在Root前提下,我们可以使用Hooker方式绑定so库,通过逆向方式篡改数值,从而达到所谓破解目的。然而,目前无论是软件加固方式,或是数据处理能力后台化,还是客户端数据真实性验证,都有了一定积累和发展,让此“懒技术”不再是破解修改的万金油。再者,阅读汇编指令,函数指针替换,压栈出栈等技术需要一定技术沉淀,不利于开发同学上手。 两年前,也是因为懒,很懒,非常懒,堆积了足够的动力,写了一个基于人工模拟方式,对一个特定规则的游戏进行暴力破解。我们都知道,人工模拟方式,绕过了大量防破解技术,只要还是人机交互模式,
xiangzhihong
2018/02/05
1.2K0
Android逆向工程
mybatis逆向工程
pom文件引入插件 <plugin> <!--Mybatis-generator插件,用于自动生成Mapper和POJO--> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> <configuration> <!--配置文件的位置--> <co
Ssss
2020/03/26
4960
mybatis的逆向工程怎么实现_mybatis逆向工程原理
mybatis,一个相对于hibernate的轻量级DAO框架,它的逆向工程可以很方便的从数据库到生成对应的entity和mapper接口。
全栈程序员站长
2022/09/24
5990
mybatis的逆向工程怎么实现_mybatis逆向工程原理
mybatis逆向工程配置文件_mybatis逆向工程多表查询
mybatis逆向工程很早之前有用过,但是一直没有整理使用步骤,今天来回顾下在idea下springboot中整合mybatis逆向工程的实现步骤
全栈程序员站长
2022/09/27
3340
mybatis逆向工程配置文件_mybatis逆向工程多表查询
Mybatis--逆向工程
<generatorConfiguration> <!-- targetRuntime="MyBatis3Simple":生成简单版的CRUD MyBatis3:豪华版 --> <context id="DB2Tables" targetRuntime="MyBatis3"> <!-- jdbcConnection:指定如何连接到目标数据库 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver"
SuperHeroes
2018/05/30
5880
MyBatis逆向工程 Generator
正向工程:先创建Java实体类,由框架负责根据实体类生成数据库表。Hibernate是支持正向工程 的。 逆向工程:先创建数据库表,由框架负责根据数据库表,反向生成如下资源: Java实体类 Mapper接口 Mapper映射文件 添加依赖和插件 pom <!-- 依赖MyBatis核心包 --> <dependencies> <dependency> <groupId>org.mybatis</groupId> <ar
鱼找水需要时间
2023/02/16
4580
MyBatis逆向工程 Generator
逆向工程——汇编基础[二]
除了显示地操作堆栈(使用push和pop指令)之外,很多指令也需要使用堆栈,如INT、CALL、LEAVE、RET、RETE、IRET等等。配对使用上述指令并不会造成什么问题,然而,如果你打算使用LEAVE、RET、RETE、IRET这样的指令实现跳转(比JMP更为麻烦,然而有时,例如在加密软件中,或者需要修改调用者状态时这是必要的)的话,那么要搞清楚他们做的到底是什么,并且精确而了解自己要做什么。
HACK学习
2019/08/05
1.2K0
逆向工程——汇编基础[一]
汇编语言是一种最接近计算机核心的编码语言。不同于任何高级语言,汇编语言几乎可以完全和机器语言一一对应。 汇编语言就是机器语言的一种可以被人读懂的形式,只不过它更容易记忆。
HACK学习
2019/08/05
1.5K0
MyBatis的逆向工程
MyBatis是目前很流行的持久层框架,很多企业都在采用。但是其复杂繁琐的配置,重复性的实体类创建等等,消耗了程序员大量的精力,同时有些地方如果一个细小的疏忽,可能导致最终功能运行失败。例如:在几十个字段的表中,某一列的列名配置疏忽。基于此,mybatis 推出了一套 jar 包,可以依据我们设计好的数据库表,自动生成 pojo、mapper 以及mapper.xml。有了逆向工程,便大大缩减了我们的开发时间。
宋先生
2019/07/18
4550
mybatis与其逆向工程
MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。myBatis在目前在SSM框架中做为持久层在使用。
Tim在路上
2020/08/04
3690
Mybatis的逆向工程
我这里使用的的eclipse插件的方式,来逆向生成代码。给出配置文件 generatorConfig.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCT
用户5927264
2019/07/31
3480

相似问题

逆向工程

12

逆向工程?

31

对安装程序进行逆向工程

20

逆向工程: C#字典的表示?

30

逆向工程Flash

83
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文