当前位置: 首页 > news >正文

对TCP/IP协议的理解

一、如何创建sockt

这是基于Linux的开发环境

SOCK_STREAM是指tcp;SOCK_DGRAM是指udp

因为int socket会返回一个int,也称它为描述字;

当你要发送数据给对方的时候不止要对方的端口号(sin_port),还要知道对方的地址(sin_addr)

#include <stdio.h>
#include <string.h>
#include <sys/param.h>
#include "esp_wifi.h"
#include "esp_event.h"
#include "nvs_flash.h"
#include "esp_log.h"
// 引入 lwIP 协议栈的 socket 头文件(ESP-IDF 基于 lwIP 实现网络)
#include "lwip/sockets.h"
#include "lwip/netdb.h"
#include "lwip/dns.h"#define SERVER_IP "192.140.4.2"
#define SERVER_PORT 8080int main()
{//1、创建socket;ESP_LOGI("TCP","开始显示TCP客户端");int sock = socket(AF_INET, SOCK_STREAM, 0);if(sock < 0){ESP_LOGE("TCP", "创建Socket失败");return -1;}ESP_LOGI("TCP", "Socket创建成功");
//2、创建服务器地址struct sockaddr_in server_addr = {.sin_family = AF_INET,.sin_port = htons(SERVER_PORT),};int ret = inet_pton(AF_INET, SERVER_IP,&server_addr.sin_addr);if(ret == 1){ESP_LOGI("inet","转换成功");}else{ESP_LOGE("inet","转换失败");}
//3.链接服务器if(connect(sock,(struct sockaddr *)&server_addr, sizeof(server_addr)) != 0){ESP_LOGE("TCP", "连接服务器失败");close(sock);return -2;}ESP_LOGI("TCP", "已连接服务器%s:%d", SERVER_IP,SERVER_PORT );//4、发送消息const char *message = "你好,我是ESP32-S3!";if(send(sock, message, sizeof(message),0) < 0){ESP_LOGE("TCP", "发送消息失败");}else{ESP_LOGI("TCP", "已发送:%s",message);}
//5接受服务器的回复
char buffer[128];
int len = recv(sock, buffer, sizeof(buffer) - 1, 0);
if(len > 0)
{buffer[len] = '\0';ESP_LOGI("TCP", "收到回复:%s",buffer);
}
else
{ESP_LOGE("TCP", "接收消息失败");
}close(sock);ESP_LOGI("TCP", "连接已关闭");
}

http://www.dtcms.com/a/528632.html

相关文章:

  • 如何判断“IP+端口“通不通
  • tensorrt c++部署
  • TypeScript 基础类型与接口详解
  • MySQL————mysql connect
  • 能打开各种网站的搜索引擎原神网页设计作业
  • 【SpringCloud】Ribbon(LoadBalancer ) 和 Feign
  • Dockerfile 中 ENTRYPOINT 和 CMD 有什么区别 ?
  • 网站数据库模版深圳网站建设黄浦网络 骗钱
  • vs code 下docker使用方法,以php 项目为示例
  • 番禺网站建设哪里好深圳十大传媒公司
  • 前端常见的设计模式
  • 亚马逊云渠道商:如何通过配置自动替换构建故障自愈的云架构?
  • 豆包 Python 和 Java 的 AI 集成及模型转换
  • 深入解析C++命令模式:设计原理与实际应用
  • 商城网站建设目标上海前十名文化传媒公司
  • ExpressionVisitor 的使用场景及方法
  • 《3D端游开放世界动态天气系统与场景交互优化实践日志》
  • Date类自主实现后的反思
  • 网络渗流:爆炸渗流
  • 购物网站建设款流程国外优秀设计网站大全
  • 【C++】STL容器-stack和queue的使用与模拟实现
  • numpy学习笔记(持续更新)
  • linux schedule函数学习
  • 教育培训网站有哪些辽宁网站建设企业定制公司
  • Python机器学习---6.集成学习与随机森林
  • 厦门网站建设公司新能源汽车价格表图片及价格表
  • 二分查找栈堆动态规划
  • 【脚本】提取phpstudy网站对应的PHP版本
  • 沈阳做平板网站移动互联网开发是干什么的
  • StreamX部署详细步骤