CAPL如何使用socket套接字实现TCP通信(数据传输)

书接上回《CAPL如何使用socket套接字实现TCP通信(建立连接)》,当TCP建立连接后,就可以传输数据了。

不管是client还是server,都是使用相同的函数传输应用层数据。

  tcpSend(clientSocket, "12345", 5);

但这里有一点值得注意:server端传输数据的socket是serverDataSocket,而不是serverSocket。

换句话说,是建立连接成功后返回的socket句柄,它是这个连接中代表server端传输数据的端点endpoint,而不是监听的socket。监听的socket还需要继续监听其他客户端的连接请求。

假设client发送数据,server接收数据,并把接收的数据发送回给client,由client接收。

接收数据调用tcpReceive()函数,从接收缓冲区提取数据到应用层。但这样会有一个问题,如果接收缓冲区没有数据,调用此函数将没有数据被获取。且数据会随时有可能发送过来,调用一次tcpReceive()只能获取当前的数据,后续有数据还是需要再调用。

CAPL提供了回调函数OnTcpReceive()来解决这个问题。当调用tcpReceive()函数接收数据时,如果有数据,将触发OnTcpReceive()函数执行。

server端调用tcpAccept()函数接受连接请求,返回的socket如果有效,说明连接成功,此时可以调用tcpReceive()函数开始接收数据。里面传入的socket一定是连接成功后返回的socket。

void OnTcpListen(dword socket, long result)
{char            buf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/778443.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高效批量管理文件,轻松实现文件批量复制并覆盖相同文件名,轻松管理文件

亲爱的用户们,您是否在批量复制文件时常常被相同文件名困扰,手动一个个改名繁琐又费时?现在,我们为您推出一款智能的文件批量改名工具,帮助您轻松处理复制时的相同文件名,让文件管理更从容! 首…

洗车行业在线预约提前下单小程序源码系统 带完整的安装代码包以及搭建教程

随着人们生活水平的提高,汽车保有量不断增加,洗车服务市场需求也日益旺盛。然而,传统的洗车服务方式往往存在排队等待时间长、服务质量不稳定等问题,给消费者带来了不便。因此,开发一款在线预约提前下单小程序&#xf…

基于java+springboot+vue实现的宠物美容机构CRM系统(文末源码+Lw+ppt)23-364

摘要 随着网络科技的不断发展以及人们经济水平的逐步提高,网络技术如今已成为人们生活中不可缺少的一部分,而信息管理系统是通过计算机技术,针对用户需求开发与设计,该技术尤其在各行业领域发挥了巨大的作用,有效地促…

C语言--编译和链接

1.翻译环境 计算机能够执行二进制指令,我们的电脑不会直接执行C语言代码,编译器把代码转换成二进制的指令; 我们在VS上面写下printf("hello world");这行代码的时候,经过翻译环境,生成可执行的exe文件&…

笔记81:在服务器中运行 Carla 报错 “Disabling core dumps.”

背景:使用实验室提供的服务器配 Carla-ROS2 联合仿真的实验环境,在安装好 Carla 后运行 ./CarlaUE4.sh 但是出现 Disabling core dumps. 报错,而且不会出现 Carla 的窗口; 解决:运行以下命令 ./CarlaUE4.sh -carl…

戴维南定理和诺顿定理的解题步骤

首先呢,由于戴维南定理和诺顿定理的思想基本相同,都是把电路进行等效替代,而且戴维南和诺顿可以互相转换,并且解题的时候最常用的还是戴维南定理,所以我们为了减少思考难度,同意用戴维南定理就可以了. 目录 用戴维南定理分析电路的基本步骤: 1.求开路电压U: 2.求等效电阻Req…

PetaLinux安装详解(Xilinx , linux, zynq, zynqMP)

1 概述 PetaLinux 工具提供在 Xilinx 处理系统上定制、构建和调配嵌入式 Linux 解决方案所需的所有组件。该解决方案旨在提升设计生产力,可与 Xilinx 硬件设计工具配合使用,以简化针对 Versal、Zynq™ UltraScale™ MPSoC、Zynq™ 7000 SoC、和 MicroBl…

【机器学习】包裹式特征选择之序列后向选择法

🎈个人主页:豌豆射手^ 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:机器学习 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进…

jvm(虚拟机)运行时数据区域介绍

Java虚拟机(JVM)运行时数据区域是Java程序在运行过程中使用的内存区域,它主要包括以下几个部分: 程序计数器(Program Counter Register): 程序计数器是一块较小的内存区域,是线程私有…

uniapp 中引入第三方组件后,更改组件的样式 -使用/deep/不生效

在我们使用Vue搭建项目的时候,我们经常会用到一些UI框架,如Element,iView,但是有时候我们又想去修改Ul框架的样式,当我们修改样式失败的时候,可以尝试一下/deep/,亲测有效。 那失败的原因是什么…

TCP/IP参考模型(四层及其解析)

文章目录 1、什么是TCP/IP2、四层协议2.1 应用层(应用程序协议)2.2 传输层(源端口↔️目的端口)2.3 网络层(主机↔️主机)2.4 网络接口层(主机↔️网络层) 总结 1、什么是TCP/IP TC…

STM32 串口 DMA 接收不定长数据的一种方法

1. 前言 使用串口接收不定长数据时,可以有多种方法,比如最常见的有额外使能一个定时器,在超过定时范围未收到后续的字节时,认为此帧结束;或者利用 IDLE 中断,当数据空闲时,自动产生中断&#x…

SpringCloud实用篇(一)

1.SpringCloud SpringCloud是目前国内使用最广泛的微服务框架。官网地址:Spring Cloud SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验: SpringCloud与SpringBoo…

Win10环境下使用Ollama搭建本地AI

前言: 1、Ollama需要安装0.1.27版本,高于这个版本在执行Ollama run 指令时会频繁触发一些奇奇怪怪的问题。 2、4.3篇章是重点,若你需要使用web访问的话,莫要忘记! 3、本文章适合新手。 4、篇章5中会介绍如何在vscode中…

探索PLC远程监控的未来:节约成本与提高效率的双赢之道

描述:随着工业自动化技术的飞速发展,PLC远程监控及程序上下载功能成为了行业的新宠,为企业节约成本,减少人员出差带来了革命性的改变。本文深入探讨了这一变革给自动化公司、客户和工程师带来的好处,以及谁是最大的受益…

基于TSINGSEE青犀AI视频智能分析技术的山区林区烟火检测方案

随着清明节的临近,山区、林区防火迫在眉睫,TSINGSEE青犀AI智能分析网关V4烟火检测算法利用物联网、人工智能、图像识别技术,有效监测和管理烟火活动,并在火灾发生的同时发出告警,通知护林员与管理人员。 将山区林区的视…

sqlite3的安装

sqlite3数据库的安装_file:///tmp/sqlite-3.34.0-746fb1ce-129d-49e1-b67c--CSDN博客 1、更新更新源 # apt-get update 2、安装软件及开发环境 # apt-get install sqlite3 --->sqlite3数据库软件 # apt-get install libsqlite3-dev ---&…

Leetcode 第 126 场双周赛题解

Leetcode 第 126 场双周赛题解 Leetcode 第 126 场双周赛题解题目1:3079. 求出加密整数的和思路代码复杂度分析 题目2:3080. 执行操作标记数组中的元素思路代码复杂度分析 题目3:3081. 替换字符串中的问号使分数最小思路代码复杂度分析 题目4…

[LeetCode]516. 最长回文子序列[记忆化搜索解法详解]

最长回文子序列 LeetCode 原题链接 题目 给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度。 子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。 示例 1&#xff1a…

Day46:WEB攻防-注入工具SQLMAPTamper编写指纹修改高权限操作目录架构

目录 数据猜解-库表列数据&字典 权限操作-文件&命令&交互式 提交方法-POST&HEAD&JSON 绕过模块-Tamper脚本-使用&开发 分析拓展-代理&调试&指纹&风险&等级 知识点: 1、注入工具-SQLMAP-常规猜解&字典配置 2、注入…