基于libuv实现tcp客户端和服务端(支持监听1000多个端口;打印客户端服务端socket;固定端口连接)

本文介绍了如何使用libuv库构建一个能够监听本地1000多个端口的服务端,并在接收到连接时接收并打印数据及连接的socket信息。同时,客户端每隔20毫秒通过固定端口向服务端的不同端口发起连接,连接成功后发送数据,并同样显示客户端与服务端的socket详情。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

服务端:监听本地1000多个端口;收到连接既接受并打印数据和客户端服务端socket;

github

#include <stdio.h>  
#include <stdlib.h>  
#include "include/uv.h"  
 
#define DEFAULT_BACKLOG 1000
#define NUM 1000/*1013*/

uv_loop_t *loop;  
struct sockaddr_in addr[NUM];  
struct sockaddr_in addrCli;  
uv_tcp_t server[NUM];  

void alloc_buffer(uv_handle_t *handle, size_t suggested_size, uv_buf_t *buf) {  
    buf->base = (char*) malloc(suggested_size);  
    buf->len = suggested_size;  
}  
  
void echo_write(uv_write_t *req, int status) {  
    if (status) {  
        fprintf(stderr, "Write error %s\n", uv_strerror(status));  
    }  
    free(req);  
}  
  
void echo_read(uv_stream_t *client, ssize_t nread, const uv_buf_t *buf)
{    
    if (nread < 0) 
    {  
        if (nread != UV_EOF)  
            printf("Read error %s\n",nread);  
        uv_close((uv_handle_t*) client, NULL);  
        return;
    } 
    else if (nread > 0) 
    {  
        /*uv_write_t *req = (uv_write_t *) malloc(sizeof(uv_write_t)); 
        uv_buf_t wrbuf = uv_buf_init(buf->base, nread); 
        uv_write(req, client, &wrbuf, 1, echo_write);*/  
    }  

    struct sockaddr addrlo1;
    struct sockaddr_in addrin1;  
    int addrlen1 = sizeof(ad
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值