Qt客户端套接字QTcpSocket通过bind指定本地ip
背景:
我做一个上位机软件,需要同时控制几个下位机,使用套接字方式通讯。但制作阶段我不希望总上机调试,而是在本机模拟通信过程。
本机网卡可以指定多个ip地址,我希望客户端(模拟下位机)连接服务端(模拟上位机)时,能够指定ip和端口。这样在连接时,才能识别是哪个下位机。而下位机不可能设计为在连接后先发个包确认身份。至少目前我不希望下位机做修改,而是我在上位机端自己搞定。
按照帮助说明使用QTcpSocket类的bind函数可以绑定ip和端口,也就是指定。但事实上一旦精确到端口,会各种不爽。
不需要识别客户端身份时,不用管它,客户端会根据自己所在的主机ip,自动选择随机端口。这时候随便连接断开很灵活,不收任何影响。
一旦绑定了ip和端口,是不可以频繁断开重连的。网上各种方法,无非是监听套接字不要自己直接用QTcpServer,要通过API调用。或者端口复用。
事实上对于我都不太适用。适用Qt就是为了跨平台,不想尝试跟OS有关的特定API。而端口复用对于qt其实并不太灵活,还是要等OS的响应。
解决方法:
仅限于我的需求,能识别客户端身份就好。
很简单,使用bind绑定的时候,只绑定ip就行了,端口就让它随机。本机网卡可以多几个ip,每个客户端指定一个ip,不管端口。比较高效。
注意:
qt比较坑的一些set函数,比如setPeerName,setLocalAddress等,首先是protect类型,还要写个子类间接调用才行。即使能调用也是然并卵,这些函数的作用仅仅是为了设定一些函数的返回值,在实际应用中意义不大。或者说对我的需求意义不大。
往往这些set函数会达到误导人的效果,不是set以后就一定能get。
Qt客户端套接字QTcpSocket通过bind指定本地ip相关推荐
- TCP聊天文件服务器v2.2 - 服务端客户端套接字解决分包/粘包问题 - SocketQueue继承以及减少冗余
TCP聊天+传输文件服务器服务器套接字v2.2 整个图当封面吧 所有版本记录: v1.0 : TCP聊天服务器套接字|PyQt5+socket(TCP端口映射+端口放行)+logging+Thread ...
- java套接字客户端_使用Java从客户端套接字读取数据(Read data from a client socket in Java)...
使用Java从客户端套接字读取数据(Read data from a client socket in Java) 我编写了从客户端套接字发送/接收数据的代码. 发送数据步骤已成功完成,但是当我想从套 ...
- 典型的异步客户端套接字构建
下面的示例程序创建一个连接到服务器的客户端.该客户端是用异步套接字生成的,因此在等待服务器返回响应时不挂起客户端应用程序的执行.该应用程序将字符串发送到服务器,然后在控制台显示该服务器返回的字符串. ...
- C语言socket()函数解析(创建套接字)af地址族,ip地址类型(Address Family)INET(Inetnet)PF(Protocol Family)
文章目录 Linux 下的 socket() 函数 1) af 为地址族(Address Family),也就是 IP 地址类型 2) type 为数据传输方式/套接字类型 3) protocol 表 ...
- 在TCP客户端连接成功的回调函数里,无法访问到客户端套接字的明细
如图,client为undefined
- 基于Nanopi NEO开发板的套接字编程!
基于Nanopi 开发板的套接字编程! 用到友善之臂Friendarm的开发包Matrix, 下载地址:https://github.com/friendlyarm/matrix.git #inclu ...
- tcp/ip网络编程--accept()函数返回的套接字
tcp/ip网络编程–accept()函数返回的套接字 套接字:1)套接字是对网络中不同主机的应用进程之间进行双向通信的端点的抽象:一个套接字就是网络进程通信的一端.[1] 2)套接字是用来与另一个进 ...
- Python Socket套接字编程
网络模型的简介 网络技术是从1990年代中期发展起来的新技术,它把互联网上分散的资源融为有机整体,实现资源的全面共享和有机协作,使人们能够透明地使用资源的整体能力并按需获取信息,资源包括高性能计算机. ...
- 计算机网络 套接字编程:生成网络应用
本文作于2022.1.25,供本人加深记忆 我们将使用下列简单的客户-服务器应用程序来演示对于UDP和TCP的套接字编程: ①客户从其键盘读取一行字符(数据)并将该数据向服务器发送. ②服务器接收该数 ...
最新文章
- MySQL数据库多种安装方法及企业级安装实践
- Hadoop mapreduce框架简介
- location和location.href跳转url的区别
- ARM指令集、Thumb指令集、Thumb-2指令集
- java 计算器_用Java编写一个简单的计算器
- OpenCV 为图像转换为漫画效果
- python游戏开发步骤_详解Python GUI版24点游戏制作过程
- js jQuery取消添加超链接的方法小结
- 测试驱动开发 测试前移_为什么测试驱动的开发有用?
- 啥叫旁路电容?啥叫去耦?可以不再争论了吗
- 干货福利:AI人工智能学习资料教程包.zip
- 苹果android投屏,iphone怎么投屏到mac?苹果手机投屏到苹果电脑方法
- Microbiome:鸡肠道微生物宏基因集(张和平、魏泓、秦楠点评)
- Lowest, highest?
- 条件概率、全概率公式
- python字典修改键所对应值_详解如何修改python中字典的键和值
- 跨境电商最新资讯——扬帆际海
- 数字电路逻辑设计笔记(3):集成逻辑门电路
- 机器学习强基计划8-4:流形学习等度量映射Isomap算法(附Python实现)
- 使用mysql Installer安装失败处理办法
热门文章
- HH SaaS电商系统的各种编号(编码/代码/代号)设计
- iOS APP上架流程详解
- Spring security oAuth2 密码错误中英文提示问题
- 以太坊交易信息及event、input、logs、topics等概念机制
- 被字句15个_小学语文必考知识:15类句式转换解题方法与练习(附答案)
- iOS开发之自定义的framework添加第三方framework,lipo和ar命令看.o文件
- java kdj macd_MACD、BOLL、KDJ 三大组合精准把握趋势与买卖!
- BOOT模式选择启动、Error -6311 PRSC modulefailedtowritetoa register。
- Web3.0峰会上IPFS最新消息利好不断
- 一篇文章带你快速上手Airtest和Poco