简单的UDP服务端

简介: 简单的UDP服务端

新建 udp_echo_server.c 文件,写入如下内容:

#include "hv/hloop.h"
#include "hv/hsocket.h"
static void on_recvfrom(hio_t *io, void *buf, int readbytes) {
  printf("on_recvfrom fd=%d readbytes=%d\n", hio_fd(io), readbytes);
  char localaddrstr[SOCKADDR_STRLEN] = {0};
  char peeraddrstr[SOCKADDR_STRLEN] = {0};
  printf("[%s] <=> [%s]\n", SOCKADDR_STR(hio_localaddr(io), localaddrstr),
         SOCKADDR_STR(hio_peeraddr(io), peeraddrstr));
  printf("< %.*s", readbytes, (char *)buf);
  // 回显数据
  printf("> %.*s", readbytes, (char *)buf);
  hio_write(io, buf, readbytes);
}
int main(int argc, char **argv) {
  if (argc < 2) {
    printf("Usage: %s port\n", argv[0]);
    return -10;
  }
  int port = atoi(argv[1]);
  // 创建事件循环
  hloop_t *loop = hloop_new(0);
  // 创建UDP服务
  hio_t *io = hloop_create_udp_server(loop, "0.0.0.0", port);
  if (io == NULL) {
    return -20;
  }
  // 设置read回调
  hio_setcb_read(io, on_recvfrom);
  // 开始读
  hio_read(io);
  // 运行事件循环
  hloop_run(loop);
  // 释放事件循环
  hloop_free(&loop);
  return 0;
}点击复制复制失败已复制


文件下载:udp_echo_server.c


提示

该文件是基于examples/udp_echo_server.c精简而来的。


编译:

$ gcc udp_echo_server.c -o udp_echo_server -Wl,-R/usr/local/lib -lhv点击复制复制失败已复制


服务端运行:

$ ./udp_echo_server 1234
on_recvfrom fd=4 readbytes=6
[0.0.0.0:1234] <=> [127.0.0.1:48195]
< hello
> hello
on_recvfrom fd=4 readbytes=5
[0.0.0.0:1234] <=> [127.0.0.1:48195]
< test
> test点击复制复制失败已复制


客户端运行:

$ nc -u 127.0.0.1 1234  
hello
hello
test
test
目录
相关文章
|
2月前
|
C语言
C语言 网络编程(八)并发的UDP服务端 以进程完成功能
这段代码展示了如何使用多进程处理 UDP 客户端和服务端通信。客户端通过发送登录请求与服务端建立连接,并与服务端新建的子进程进行数据交换。服务端则负责接收请求,验证登录信息,并创建子进程处理客户端的具体请求。子进程会创建一个新的套接字与客户端通信,实现数据收发功能。此方案有效利用了多进程的优势,提高了系统的并发处理能力。
|
2月前
|
C语言
C语言 网络编程(九)并发的UDP服务端 以线程完成功能
这是一个基于UDP协议的客户端和服务端程序,其中服务端采用多线程并发处理客户端请求。客户端通过UDP向服务端发送登录请求,并根据登录结果与服务端的新子线程进行后续交互。服务端在主线程中接收客户端请求并创建新线程处理登录验证及后续通信,子线程创建新的套接字并与客户端进行数据交换。该程序展示了如何利用线程和UDP实现简单的并发服务器架构。
|
2月前
|
网络协议
最简单的tcp客户端和服务端 还有udp
最简单的tcp客户端和服务端 还有udp
|
6月前
|
安全 Java Go
springboot+netty化身Udp服务端,go化身客户端模拟设备实现指令联动
springboot+netty化身Udp服务端,go化身客户端模拟设备实现指令联动
159 0
|
11月前
|
Cloud Native Go
线上 udp 客户端请求服务端客户端句柄泄漏问题
线上 udp 客户端请求服务端客户端句柄泄漏问题
|
大数据 开发者 容器
网络编程:socket—基于 UDP 服务端编程|学习笔记
快速学习网络编程:socket—基于 UDP 服务端编程
170 0
|
前端开发 Java API
NIO框架入门(一):服务端基于Netty4的UDP双向通信Demo演示
学习交流 更多学习资料:点此进入 移动端即时通讯交流:215891622 前言 NIO框架的流行,使得开发大并发、高性能的互联网服务端成为可能。这其中最流行的无非就是MINA和Netty了,MINA目前的主要版本是MINA2、而Netty的主要版本是Netty3和Netty4(Netty5已经被取消开发了:详见此文)。
1608 0
|
缓存 网络协议
udp服务端收发数据流程
1、创建服务端的socket以便开始通讯。2、绑定ip以及端口号,这样客户端才能找到这个程序。3、因为本地网卡不止一个所以尽量不写死,一般用""空来表示所有本地网卡。4、接下来开始通过绑定的ip以及端口开始监听消息,设置最大接收1024字节消息,以防文件过大,占满网络缓存区。
1344 0