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

服务端:监听本地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(addrlo1);
    char sockname1[1
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值