signal_server

该程序创建了一个TCP服务器,监听13400端口。当客户端连接并发送数据时,服务器读取数据并检查是否匹配预定义的routine_active或daig_msg消息。如果匹配,程序将打印相应的消息并处理接收到的消息。
摘要由CSDN通过智能技术生成

#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h> //atoi()

#define PORT 13400

int main()
{
    int server_fd, new_socket, ret;
    struct sockaddr_in address;
    int addrlen = sizeof(address);
    char buffer[100] = {0x00, };
    char rountine_active[15] = { 0x02,
                                  0xfd,
                                  0x00,0x05,
                                  0x00,0x00,0x00,0x07,
                                  0x0e,0x81,
                                  0x00,
                                  0x00,0x00,0x00,0x00 };
    char daig_msg[15] = { 0x02,
                          0xfd,
                          0x80,0x01,
                          0x00,0x00,0x00,0x07,
                          0x0e,0x81,
                          0x10,0x02,
                          0x22,0xf1,0x86 };

    // Create server socket
    if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0)
    {
        perror("socket failed");
        exit(EXIT_FAILURE);
    }

    // Bind socket to port
    address.sin_family = AF_INET;
    address.sin_addr.s_addr = INADDR_ANY;
    address.sin_port = htons(PORT);

    if (bind(server_fd, (struct sockaddr *)&address, sizeof(address))<0)
    {
        perror("bind failed");
        exit(EXIT_FAILURE);
    }

    // Listen for incoming connections
    if (listen(server_fd, 3) < 0)
    {
        perror("listen failed");
        exit(EXIT_FAILURE);
    }

    // Accept incoming connections and read data
    while(1)
    {
        printf("\nWaiting for client connection...\n");
        if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen))<0)
        {
            perror("accept failed");
            exit(EXIT_FAILURE);
        }

        printf("Client connected!\n");

        bzero(buffer, sizeof(buffer));
        ret = read(new_socket, buffer, sizeof(buffer));
        if(ret<=0)
        {
            perror("read failed");
            close(new_socket);
            continue;
        }
        printf("Received data: ");
        for(int i=0; i<ret; i++)
        {
            printf("%02X ", buffer[i]);
        }
        printf("\n");

        if(memcmp(buffer, rountine_active, sizeof(rountine_active)) == 0)
        {
            printf("Routine active message received.\n");
            // Process routine active message
        }
        else if(memcmp(buffer, daig_msg, sizeof(daig_msg)) == 0)
        {
            printf("Daig message received.\n");
            // Process daig message
        }

        close(new_socket);
    }

    return 0;
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值