简单的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
目录
相关文章
|
3月前
|
安全 Java Go
springboot+netty化身Udp服务端,go化身客户端模拟设备实现指令联动
springboot+netty化身Udp服务端,go化身客户端模拟设备实现指令联动
126 0
|
8月前
|
Cloud Native Go
线上 udp 客户端请求服务端客户端句柄泄漏问题
线上 udp 客户端请求服务端客户端句柄泄漏问题
|
大数据 开发者 容器
网络编程:socket—基于 UDP 服务端编程|学习笔记
快速学习网络编程:socket—基于 UDP 服务端编程
160 0
|
前端开发 Java API
NIO框架入门(一):服务端基于Netty4的UDP双向通信Demo演示
学习交流 更多学习资料:点此进入 移动端即时通讯交流:215891622 前言 NIO框架的流行,使得开发大并发、高性能的互联网服务端成为可能。这其中最流行的无非就是MINA和Netty了,MINA目前的主要版本是MINA2、而Netty的主要版本是Netty3和Netty4(Netty5已经被取消开发了:详见此文)。
1582 0
|
缓存 网络协议
udp服务端收发数据流程
1、创建服务端的socket以便开始通讯。2、绑定ip以及端口号,这样客户端才能找到这个程序。3、因为本地网卡不止一个所以尽量不写死,一般用""空来表示所有本地网卡。4、接下来开始通过绑定的ip以及端口开始监听消息,设置最大接收1024字节消息,以防文件过大,占满网络缓存区。
1327 0
|
Java API Android开发
NIO框架入门(二):服务端基于MINA2的UDP双向通信Demo演示
学习交流 更多学习资料:点此进入,移动端即时通讯交流Q群:215891622 前言 NIO框架的流行,使得开发大并发、高性能的互联网服务端成为可能。
1244 0
|
1月前
|
网络协议
Qt中的网络编程(Tcp和Udp)运用详解以及简单示范案例
Tcp和Udp是我们学习网络编程中经常接触到的两个通讯协议,在Qt也被Qt封装成了自己的库供我们调用,对于需要进行网络交互的项目中无疑是很重要的,希望这篇文章可以帮助到大家。 是关于Qt中TCP和UDP的基本使用和特点:
170 7
|
1天前
|
网络协议 网络安全 Python
电脑中 TCP/UDP 端口是否开放的测试:令人意想不到的神奇策略等你发现!
【8月更文挑战第19天】在网络管理和维护中,常需确认TCP/UDP端口是否开放以确保服务运行顺畅。端口如同计算机对外通信的“门”,TCP提供可靠连接,UDP则快速但无连接。测试端口是否开放的方法多样:可用`telnet`测试TCP端口,如`telnet localhost 80`;UDP测试较复杂,可用`nc`工具,如`nc -u -z localhost 53`。此外,也有在线工具可供选择,但需确保其安全性。