linux socket中tcp传输client端指定本地端口

网络编程3——TCP Socket实现的客户端服务器通信完整代码(详细注释帮你快速理解) 教会你如何使用TCP Socket实现客户端与服务器的通信。详细介绍了相关类的属性与方法的作用,每行代码都有注释帮你分析它的作用,章尾解答客户端服务器的常见疑惑。 阅读详情

文章目录


背景

在做SOC与MCU通信的时候,MCU端作为服务端,SOC端作为客户端。博主开发的是SOC端的代码,写个socket通讯很容易,很快写完和上位机模拟测试是OK的,但是和MCU联调的时候发现不通,握手不上。

抓包分析,原因找到,MCU端的习惯是将源端口和目标端口都配置成同一个,SOC(linux)上的习惯是,只指定目标端口,源端口随机分配,显而易见,如此肯定通不了。

解决

要么MCU改,要我SOC改。

基于安全和资源的考虑,MCU端的端口确实应该是明确指定的,那就SOC端改。

在建立socket连接时,将源端口固定:
示例代码

...
memset(&servaddr,0,sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(m_port);  // 指定服务端的通讯端口
memcpy(&servaddr.sin_addr,h->h_addr,h->h_length);

memset(&clientaddr,0,sizeof(clientaddr));
clientaddr.sin_family = AF_INET;
clientaddr.sin_port = htons(m_port);  // 指定客户端的通讯端口
clientaddr.sin_addr.s_addr = INADDR_ANY;

if (bind(m_sockfd, (struct sockaddr *)&clientaddr,sizeof(clientaddr)) != 0)
{
  close(m_sockfd);  m_sockfd = -1; return false;
}

if (connect(m_sockfd, (struct sockaddr *)&servaddr,sizeof(servaddr)) != 0)
{
  close(m_sockfd);  m_sockfd = -1; return false;
}
...
【Linux】pc与Linux开发板实现TCP Socket通信 文章目录题目要求一、软硬件准备1、硬件准备2、软件准备二、编译生成可执行文件1、新建server.c并gcc编译生成fuwuqi2.新建client.c并gcc生成kehu运行并传输文件 题目要求 利用TCP Socket实现PC机与目标板的通讯,目标板作为服务端,服务端按要求给两个客户端传送文件。 作业要求: 1)交电子文档,需要源代码。 2)上机演示 一、软硬件准备 1、硬件准备 Linux开发箱 2、软件准备 Ubuntu VMware 超级终端 二、编译生成可执行文件 1、新建server.c并g 阅读详情

相关推荐

Qt学习 之 Socket通信

最近写大作业用到Qt的Socket部分,网上关于这部分的资料都太过复杂,现在总结一下一些简单的应用。有机会可以给大家讲讲用Socket传送文件的代码。这里主要讲解如何实现TCP和UDP的简单通信。socket简介在LINUX下进行网络编程,我们可以使用LINUX提供的统一的套接字接口。但是这种方法牵涉到太多的结构体,比如IP地址,端口转换等,不熟练的人往往容易犯这样那样的错误。QT中提供的SOCKE

Mr.Phoebe的专栏 1万+

Socket套接字

Socket套接字编程详解,TCP编程和UDP编程实现流程,代码案例

qq_44709970的博客 2171

socket实现大数据传输

socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求。 socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,对于文件用【打开】【读写】【关闭】模式来操作。socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭) ...

超级丹的专栏 8060

Linux下利用TCP的服务端和客户端实现简单收发消息

Linux下利用TCP的服务端和客户端实现简单收发消息

itmozun629的博客 1510

Linux C语言实现TCP文件传输:从Socket编程到协议设计实战

网络编程是构建分布式系统的基石,其核心在于理解数据如何在网络中可靠传输。TCP协议通过三次握手、序列号确认、流量控制等机制,为应用层提供了面向连接的、可靠的字节流服务。在Linux环境下,Socket API是进行网络通信的标准接口,开发者通过创建Socket、绑定地址、监听连接、收发数据等系统调用,可以构建各种网络应用。这种底层控制能力对于实现高性能、低延迟的服务至关重要,尤其在资源受限或对效率有严苛要求的场景中,如嵌入式系统、高频交易或大规模并发服务器。基于TCP的应用层协议设计,例如采用“消息头+消息

weixin_34056162的博客 377

socket 客户端指定源端口

[oswatch@yyjk ~]$ netstat -nap | grep 645471 (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) tcp 0 0 20.5.101.31:3366 0.0.0.0:* LISTEN ...

zhaoyangjian724的专栏 1747

<树莓派>——基于Socket、Opencv、树莓派---实时拍摄并传输图片

1.器件 1 上位机—笔记本 2 下位机–树莓派zero w/树莓派3B+ 3 树莓派V2相机–800w像素 2.基于SOCKET的通讯 Server----作为服务器接收图片 Client----作为客户端采集图片并通过socket的网口连接传输 3.树莓派未Linux,笔记本Windows/Linux Server端代码-----(Linux)...

Kano365的博客 4558

如何在 Socket 中显式为客户端分配端口号?

在计算机网络中,端口号是用来标识不同应用程序的逻辑地址。它是一个 16 位的数字,范围从 0 到 65535。其中,0 到 1023 的端口号是预留给系统使用的,而 1024 到 49151 是注册端口号,用于一般的网络通信。49152 到 65535 的端口号是动态或私有端口号,通常由客户端程序使用。本文介绍了如何在 Socket 中显式为客户端分配端口号。通过显式分配端口号,可以确保端口的唯一性,方便管理和提高安全性。

网络技术联盟站 890

【socket编程】TCP、UDP通信总结

一、什么是socket? Socket的英文原义是“孔”或“插座”。在编程中,Socket被称做 套接字,是网络通信中的一种约定。Socket编程的应用无处不在,我们平时用的QQ、微信、浏览器等程序,都与Socket编程有关。我们平时使用浏览器查资料,这个过程的技术原理是怎样的呢? 我们平时使用浏览器,大致就是这样的一个过程。这里有两个重要的名词: 服务端与 客户端。 Socket编程的目的就是如何实现这两端之间的通信。 1、Socket编程在嵌入式中也很重要 Socket编程不仅仅在互联网方面很重要,在我

果果小师弟的博客 4771

VirtualLab初学者教程-1.用户界面

目录前言一、VirtualLab Fusion简介1.软件2.内置工具箱:二、用户界面认识1.上方菜单栏2.右侧面主窗口3.底部窗口附 前言 感觉做VirtualLab的资料不是特别多,可能用的朋友也比较少吧,笔者最近也因为大创需要刚刚开始入门,把网上有的英文资料整理了一下,加了一点自己的内容发出来希望帮助更多在学习中的朋友,有用词不当之处还请多多包涵。 一、VirtualLab Fusion简介 因为是第一讲,简单啰嗦一下软件本身,参考官方介绍。 1.软件 VirtualLab是由德国LightTran

ClaireTang1的博客 2万+

【遥感数字图像处理(朱文泉)】第四章 变换域处理方法

变换域的处理方法

甜子yu的博客 4311

Linux网络通信—Socket(TCP实现)

Linux网络通信—Socket(TCP实现) 一、socket概述 为了简化开发通信程序的工作,由Berkely学校开发了一套网络通信程序的API函数标准。 二、SOCKET分类 流式套接字(SOCK_STREAM) 流式的套接字可以提供可靠的、面向连接的通讯流。它使用了TCP协议。TCP 保证了数据传输的正确性和顺序性。 数据报套接字(SOCK_DGRAM) 数据报套接字定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证可靠,无差错。使用数据报协议UDP协议。 原始套接字 原

wangbaba_1的博客 727

普冉PY32F003定时器实战:从HSE时钟配置到500ms精准闪烁LED(附完整代码)

本文详细解析了普冉PY32F003单片机定时器的实战应用,从HSE时钟配置到实现500ms精准LED闪烁。通过完整的代码示例和深入的技术分析,帮助开发者掌握定时器参数计算、中断优先级管理及调试技巧,适用于各类嵌入式开发项目。

weixin_30608503的博客 451

Socket网络编程:TCP与UDP

socket网络编程:TCP与UDP

Edward2022的博客 8913

HBuilderx 坑 之前没问题 改了几行代码 小程序上传报分包大小超过限制

Error: 分包大小超过限制,main package source size 4199KB exceed max limit 2MB [20221213 10:08:06][wx432abdb518bdc1eb]下面的我提示是都没超过2M,却提示我超过限制,代码改了不到20行吧,之前是正常上传的.....,比如这类,要压缩的,前提是没压缩过的,但是我肯定提交的时候是压缩的,没勾选此项的要注意,如果本文解决了你的困扰 来波666不为过吧!

爱就码上行动,奔赴热爱,追光而行。愿你带着从容与热爱,拥抱每一天的惊喜与美好 5219

告别环境配置烦恼:用Conda一键搞定GATK4、samtools、fastp等生信分析全家桶

本文介绍如何利用Conda快速搭建包含GATK4、samtools、fastp等工具的生物信息学分析环境,解决软件安装和版本冲突问题。通过详细的配置步骤和实战案例,帮助研究者十分钟内完成重测序分析全家桶的环境配置,显著提升上游分析效率。

weixin_30753873的博客 334

Linux C/C++ TCP Socket传输文件或图片实例

环境:Linux 语言:C/C++ 通信方式:TCP   下面用TCP协议编写一个简单的服务器、客户端,其中服务器端一直监听本机的6666号端口。如果收到连接请求,将接收请求并接收客户端发来的消息;客户端与服务器端建立连接。连接建立成功后,读取文件内容(/root/workspace/socket-picture/bizhi.jpg),发送给服务器端,服务器端新建new1.jpg文件,将接收...

weixin_30487317的博客 2073

《网络安全自学教程》- 防火墙原理分析与Windows防火墙使用配置

防火墙分类及原理,Windows开启防火墙,Windows防火墙添加策略,

wangyuxiang946的博客 1万+

linux java socket编程_Linux网络编程之socket文件传输示例

本文所述示例程序是基于Linux平台的socket网络编程,实现文件传输功能。该示例是基于TCP流协议实现的socket网络文件传输程序。采用C语言编写。最终能够实现传输任何格式文件的文件传输程序。具体实现代码如下:Server端代码如下:/*************************************************************************> F...

weixin_42503036的博客 171

【PostgreSQL教程】PostgreSQL 特别篇之 语言接口Java

本篇教程的Java程序中开始使用PostgreSQL之前,需要确保在计算机上设置了PostgreSQL JDBC和Java。您可以检查Java教程以在计算机上安装Java。现在让本篇教程检查如何设置PostgreSQL JDBC驱动程序。

No8g攻城狮的博客 1754

机床联网系列总结

总结机床联网专栏,两个好用的工具介绍,以及后续提升的方法和建议。

若云流风的专栏 933

linux网络编程——TCP编程

TCP server端和client端的函数,我们只需要按照这个图将其中的函数每个都完善,就可以实现TCP连接了。

only_print的博客 1517

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

网络编程:TCP Socket

传输控制协议。是一种面向连接的、可靠的、基于字节流的传输层通信协议。它通过“三次握手”建立连接,通过“确认应答”机制保证数据不丢失。

m0_52540136的博客 867

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Linux——网络socket(server、client)

Linux——网络socket(server、client) 前言: 对于APUE网络socket,我们需要了解就是server和client之间的通信建立过程。首先我们需要知道两台不同网段的pc是怎么通信的,当一台pc通过应用程序发一段消息过来给另一台pc时,pc获取到数据包之后就行拆包解析,这些都是操作系统内核的工作,对于server而言,需要告诉内核使用什么ip和端口来建立起服务,当有client接入时,内核先进行解析,得到client的ip和访问端口之后再给server(对应的应用程序),最后完成通

weixin_45062087的博客 2908

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

传输层协议 TCP [ 下 ]

TCP协议机制深入解析与网络可靠性实现 本文深入探讨了TCP协议的核心机制及其在网络通信中的应用,主要内容包括: 可靠传输机制 确认应答(ACK)机制:通过序列号确保数据有序接收 超时重传机制:动态调整重传时间应对网络变化 连接管理:三次握手建立连接,四次挥手断开连接,包含TIME_WAIT状态设计 性能优化机制 滑动窗口:实现流量控制,提高传输效率 拥塞控制:通过慢启动和拥塞避免算法适应网络状况 延迟应答与捎带应答:减少网络流量,提高吞吐量 异常处理 针对网络断连、机器重启等异常情况的处理策略 TCP与U

Small_entreprene的博客 1351
上一篇: “不平凡的代理初始值设定不受支持”,出现的原因及解决方法
下一篇: 申请Vector 总线协议彩图壁纸挂画,非常棒哦!
智驾
博客等级 码龄11年 6670粉丝 574原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智驾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值