Sure, here's an example of a socket server code sample that implements a watchdog timer using the STM32 HAL library in C language:
```c
#include "stm32f4xx_hal.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>

#define PORT 1025
#define IP "172.22.100.100"

static void SystemClock_Config(void);
static void Error_Handler(void);
static void MX_GPIO_Init(void);
static void MX_ETH_Init(void);
static void MX_TIM_Init(void);

ETH_HandleTypeDef heth;
TIM_HandleTypeDef htim;

int main()
{
    int server_fd, client_fd;
    struct sockaddr_in server_addr, client_addr;
    socklen_t addr_len = sizeof(struct sockaddr_in);
    char buffer[1024] = {0};
    int opt = 1;
    
    // initialize HAL libraries
    HAL_Init();
    
    // configure the system clock
    SystemClock_Config();
    
    // initialize GPIOs
    MX_GPIO_Init();
    
    // initialize Ethernet
    MX_ETH_Init();
    
    // initialize watchdog timer
    MX_TIM_Init();
    
    // create socket file descriptor
    if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0)
    {
        perror("socket failed");
        Error_Handler();
    }
    
    // set socket options
    if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt)))
    {
        perror("setsockopt failed");
        Error_Handler();
    }
    
    // set server address parameters
    server_addr.sin_family = AF_INET;
    server_addr.sin_addr.s_addr = inet_addr(IP);
    server_addr.sin_port = htons(PORT);
    
    // bind socket to server address
    if (bind(server_fd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0)
    {
        perror("bind failed");
        Error_Handler();
    }
    
    // listen for incoming connections
    if (listen(server_fd, 3) < 0)
    {
        perror("listen failed");
        Error_Handler();
    }
    
    printf("Server listening on %s:%d...\n", IP, PORT);
    
    while (1)
    {
        // reset watchdog timer
        HAL_TIM_Base_Start_IT(&htim);
        
        // accept incoming connection
        if ((client_fd = accept(server_fd, (struct sockaddr *)&client_addr, &addr_len)) < 0)
        {
            perror("accept failed");
            Error_Handler();
        }
        
        // read data from client
        read(client_fd, buffer, 1024);
        printf("Received message from client: %s\n", buffer);
        
        // send response to client
        char *response = "Hello, client!";
        send(client_fd, response, strlen(response), 0);
        
        // close client connection
        close(client_fd);
    }
    
    // close server socket
    close(server_fd);
    
    return 0;
}

static void SystemClock_Config(void)
{
    RCC_OscInitTypeDef RCC_OscInitStruct;
    RCC_ClkInitTypeDef RCC_ClkInitStruct;

    __HAL_RCC_PWR_CLK_ENABLE();
    __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);

    RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
    RCC_OscInitStruct.HSEState = RCC_HSE_ON;
    RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
    RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
    RCC_OscInitStruct.PLL.PLLM = 25;
    RCC_OscInitStruct.PLL.PLLN = 336;
    RCC_OscInitStruct
```
물론, 다음은 C 언어로 STM32 HAL 라이브러리를 사용하여 감시 타이머를 구현하는 소켓 서버 코드 샘플의 예입니다:```c#include "stm32f4xx_hal.h"#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/socket.h>#include <arpa/inet.h>#include <unistd.h>#define PORT 1025IP "172.22.100.100" #define IP "172.22.100.100"static void SystemClock_Config(void);static void Error_Handler(void);static void MX_GPIO_Init(void)static void MX_ETH_Init(void);static void MX_TIM_Init(void); } }ETH_HandleTypeDef heth;TIM_HandleTypeDef htim;int main(){    int 서버_에프디, 클라이언트_에프디;    구조체 SOCKADDR_IN 서버_addr, 클라이언트_addr;    socklen_t addr_len = sizeof(구조체 sockaddr_in);    char buffer[1024] = {0};    int opt = 1;        // HAL 라이브러리 초기화    HAL_Init();        // 시스템 시계 설정    SystemClock_Config();        // GPIO 초기화    MX_GPIO_Init();        // 이더넷 초기화    MX_ETH_Init();        // 감시 타이머 초기화    MX_TIM_Init();        // 소켓 파일 기술자 생성    if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0)    {        perror("소켓 실패");        Error_Handler();    }        // 소켓 옵션 설정    if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt)))    {        perror("setsockopt 실패");        Error_Handler();    }        // 서버 주소 파라미터 설정    server_addr.sin_family = AF_INET;    server_addr.sin_addr.s_addr = inet_addr(IP);    server_addr.sin_port = htons(PORT);        // 소켓을 서버 주소에 바인딩    if (bind(server_fd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0)    {        perror("바인드 실패");        Error_Handler();    }        // 들어오는 연결 수신 대기    if (listen(server_fd, 3) < 0)    {        perror("수신 실패");        Error_Handler();    }        printf("서버가 %s:%d...\n에서 수신 대기 중", IP, PORT);        while (1)    {        // 감시 타이머 재설정        HAL_TIM_Base_Start_IT(&htim);                // 들어오는 연결 수락        if ((client_fd = accept(server_fd, (struct sockaddr *)&client_addr, &addr_len)) < 0)        {            perror("accept failed");            Error_Handler();        }                // 클라이언트에서 데이터 읽기        read(client_fd, buffer, 1024);        printf("클라이언트로부터 메시지 수신: %s\n", buffer);                // 클라이언트에 응답 보내기        문자 *response = "안녕하세요, 클라이언트!";        send(client_fd, response, strlen(response), 0);                // 클라이언트 연결 닫기        close(client_fd);    }        // 서버 소켓 닫기    close(server_fd);        반환 0;}static void SystemClock_Config(void){    RCC_OscInitTypeDef RCC_OscInitStruct;    RCC_ClkInitTypeDef RCC_ClkInitStruct;    __HAL_RCC_PWR_CLK_ENABLE();    __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);    RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;    RCC_OscInitStruct.HSEState = RCC_HSE_ON;    RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;    RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;    RCC_OscInitStruct.PLL.PLLM = 25;    RCC_OscInitStruct.PLL.PLLN = 336;    RCC_OscInitStruct```