能够完成开启两个线程分别来启动两个服务器,收到数据后发给特定的客户端

本文介绍了如何通过编程实现开启两个独立的线程,每个线程启动一个服务器,当服务器接收到数据后,能即时转发到指定的客户端。这种方法在并发处理和实时通信场景中具有较高的应用价值。
摘要由CSDN通过智能技术生成
#include<stdio.h>
#include<string.h>
#include<sys/types.h>
#include<unistd.h>
#include<ctype.h>
#include<arpa/inet.h>
#include <pthread.h>
#include <stdlib.h>
#include<pthread.h>


// =================================================
// =================================================
//                  宏定义
// =================================================
// =================================================
#define RECE_BUF_LEN 128 // receive buffer length
#define SEND_BUF_LEN 128 // send buffer length
#define PORT_1      0xa5a6 // port
#define PORT_2      0xa5a7 // port
#define PORT_3      0xa5a6 // port
#define SERVER_INIT_IP_1      "192.168.50.130"
#define SERVER_INIT_IP_2      "192.168.50.130"

#define CLIENT_INIT_IP      "192.168.50.129"

typedef struct {
    int* server_fd;
    int domain;
    int type;
    int protocol;
    struct sockaddr_in* server_addr;
    const char *strptr;
    uint16_t hostshort;
    int serverIndex;
}SERVER_INFO;

// =================================================
// =================================================
//                  全局变量
// =================================================
// =================================================
int g_uDebugFlag = 0;

// 服务器端文件描述符
int server_fd_1;
int server_fd_2;

// 发送数据的客户端地址信息的结构体
struct sockaddr_in client_addr_from;
socklen_t socklen = sizeof(client_addr_from);

// 用于存储接收到的数据
char receBuf[RECE_BUF_LEN];

// 用于存储发送的数据
char sendBuf[SEND_BUF_LEN];


struct sockaddr_in client_addr;
// sockaddr数据结构struct sockaddr_in中包含了IP地址协议类型、IP地址和端口号
struct sockaddr_in server_addr_1;
struct sockaddr_in server_addr_2;

// =================================================
// =================================================
//                  函数
// =================================================
// =================================================
// 对struct sockaddr_in进行设置
int setSockaddr_in(struct sockaddr_in *pAddr, sa_family_t sin_family, const char *strptr, uint16_t hostshort){
    // 对socket数据结构内存初始化
    memset(pAddr, 0, sizeof(struct sockaddr_in));

    // printf("sizeof(st
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值