对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 8080



int 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", "连接已关闭");
}
相关推荐
andxe11 小时前
安科士 AndXe 技术博客:400G QSFP112 SR4 光模块|AI 算力与超算短距互联最优方案
网络·人工智能·光模块·光通信
shiyi.十一12 小时前
第2章:应用层 — 知识要点与架构
网络·计算机网络·架构
DFT计算杂谈12 小时前
无 Root 权限在 Tesla K80 零门槛部署 DeepSeek 大模型
linux·服务器·网络·数据库·机器学习
水境传感 李兆栋12 小时前
GNSS 位移监测站 :毫米级感知,筑牢安全监测防线
网络
中微极客14 小时前
2026主流AI Agent框架技术选型与性能对比
运维·网络·人工智能
猿的天空18 小时前
机器人双手迎来全栈训练系统:灵初智能EgoSteer让灵巧手无所不能
网络·人工智能·计算机·ai·程序员·机器人·编程
Xzaveir_77718 小时前
OPPO、vivo、荣耀号码认证:多终端拨测矩阵与异常复现
大数据·网络·科技·矩阵·产品经理·ai-native
wuqingshun31415918 小时前
从网络角度来看,用户从输入网址到网页显示,期间发生了什么?
网络
牛马工作号18 小时前
Zigbee 专业详解:从协议到排障
网络·物联网·安全
牛马工作号19 小时前
Wi‑Fi 完全指南:从 802.11 协议到 Wi‑Fi 7、AC+AP 与 Mesh 工程组网
网络·网络协议·智能路由器