首页 > 其他分享 >CAPL如何使用socket套接字实现TCP通信(数据传输)

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

时间:2024-03-29 13:30:20浏览次数:21  
标签:调用 函数 TCP server CAPL 接收数据 连接 socket

书接上回《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

标签:调用,函数,TCP,server,CAPL,接收数据,连接,socket
From: https://blog.csdn.net/wjz110201/article/details/137119501

相关文章

  • TCP三次握手、四次挥手出现意外情况时,如何保证稳定可靠?
    TCP作为一个靠谱的协议,在传输数据的前后,需要在双端之间建立连接,并在双端各自维护连接的状态。TCP并没有什么特别之处,在面对多变的网络情况,也只能通过不断的重传和各种算法来保证可靠性。建立连接前,TCP会通过三次握手来保证双端状态正确,然后就可以正常传输数据了。当数据传......
  • TCP/IP:互联网通信的核心协议
    引言在当今数字化时代,互联网已经成为人类社会不可或缺的一部分,而TCP/IP协议则是支撑互联网运作的关键。无论是发送电子邮件、浏览网页,还是进行视频通话,TCP/IP协议都在背后默默地发挥着作用。本文将引领读者深入了解TCP/IP协议的核心概念,从其起源、结构到应用,全方位解析这一......
  • 用docker创建nginx反向代理tcp流量
    有这样一个需求,需要反向代理一个tcp连接,我打算用nginx来做,比较简单的实现掉./conf/nginx.conf配置文件usernginx;worker_processesauto;error_log/var/log/nginx/error.lognotice;pid/var/run/nginx.pid;events{worker_connections1024;}......
  • Linux下TCP/IP编程--TCP实战
    之前尝试过windows下的简单TCP客户端服务器编写,这次尝试下一下Linux环境下的TCP客户端代码#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>structC......
  • 在Linux中,如何追踪TCP连接和网络数据包,如使用tcpdump或Wireshark?
    在Linux环境中,追踪TCP连接和网络数据包主要通过使用命令行工具tcpdump和图形化网络分析软件Wireshark来实现。以下是详细的操作步骤:1.使用tcpdumptcpdump是一个强大的命令行网络抓包工具,用于实时捕获和分析网络流量。以下是如何使用tcpdump追踪TCP连接和数据包:1.基本用法......
  • flutter加载网络图片错误EXCEPTION CAUGHT BY IMAGE RESOURCE SERVICE The following
    在flutter里使用image.network加载网络图片遇到错误══╡EXCEPTIONCAUGHTBYIMAGERESOURCESERVICE╞════════════════════════════════════════════════════ThefollowingSocketExceptionwasthrownresolvingani......
  • 面试必问-TCP三次握手
    三次握手过程1.客户端处于close状态,向服务器发送建立连接的请求SYN和初始序列号2.服务器处于LISTEN状态,收到客户端发来的请求后回复SYN,服务器的初始序列号,ACK和确认应答序号为客户端初始序列号+1,服务器变为SYN_REVD状态3.客户端收到服务器后,恢复ACK和确认应答号为服务器初......
  • 基于STM32的ModBus实现(二)移植FreeMODBUS TCP
    一、ModBusTCPModbusTCP是一种基于TCP/IP协议的Modbus通信协议的变种。它允许Modbus协议在以太网上进行通信,提供了一种简单而有效的方式来连接不同类型的设备,如传感器、执行器、PLC等。ModbusTCP使用标准的TCP/IP协议栈,因此可以在现有的以太网基础设施上运行,而无需额外的硬......
  • HCIA——三、TCP四次挥手及其wireshark抓包
    ZYHCIA所有内容:TCPTCP四次挥手全过程第一次挥手第二次挥手第三次挥手第四次挥手补充wireshark抓包工具1、搭建拓扑图2、手配ip地址与子网掩码3、服务器启动HTTP服务4、客户端访问HTTP服务器全过程5、TCP数据包数据包信息第一行以及它所包含的信息:数据包信息第二行以及它......
  • TCP与UDP:传输层协议对比
    ......