# c_tcp_udp **Repository Path**: daitougege/c_tcp_udp ## Basic Information - **Project Name**: c_tcp_udp - **Description**: C语言实现的tcp、udp网络通信服务,主要作为下一阶段和go语言搭配使用的技术探索方案. - **Primary Language**: C - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 11 - **Forks**: 5 - **Created**: 2020-09-24 - **Last Updated**: 2023-11-02 ## Categories & Tags **Categories**: web-dev-toolkits **Tags**: None ## README ## C语言 tcp_udp #### 介绍 > `c语言` 实现的 `tcp、udp` 网络通信服务器, `tcp server` 采用 `epoll(lt)` 模型,实现了多客户端同时连接(最大连接值暂定为8192),收发消息. > 也可以作为您了解、学习 `sokcet` 网络编程的一份完整资料. #### 我们的目的 > 基于这份 `socket` 完整代码, 在 `c` 和 `go` 或其他语言之间进行技术探索,将自己掌握的技术融汇贯通,让不同语言都为我所用! 未来, 我们还将实现 `MQTT协议` ,所有偏硬件的协议全部采用 `c语言` 实现, 最终编译为 `linux so 库` ,供 go 或其他语言调用. #### 使用说明 > 1.本套代码仅在 `linux` 经过了测试、编译、运行, `windows` 未做任何测试. > 2.客户端您可以在网上下载一款现成的网络工具进行测试,例如:https://wwa.lanzous.com/ik0g8gwirqj , 该工具支持 tcp 、 udp(但是udp只支持发消息,不支持收消息). > 提醒:由于很多 `window` 端的网络测试工具发送的中文是 `ansi(gbk系列)` 编码, 本服务端目前只能处理 gbk系列和 utf-8 编码,其他编码中奇怪的字符无法支持. #### 文件清单 > 截图已经包括了源文件以及编译后的文件,编译部分将在后续介绍. ![文件清单](http://139.196.101.31:2080/images/tcp_udp_list.png) #### TCP 服务端编译 ```code // tcp 服务默认在 9505 端口提供服务, 请自行将 9505 端口在防火墙放行 firewall-cmd --zone=public --add-port=9505/tcp --permanent firewall-cmd --complete-reload //编译 tcpserver gcc -o tcp_server ./tcp_server.c ./libs/functions.c ./errors.c //启动 ./tcpserver //编译 tcpclient gcc -o tcpclient ./tcp_client.c //启动 ./tcpclient ``` > **使用tcpserver和tcpclient测试** ![使用tcpserver和tcpclient测试](http://139.196.101.31:2080/images/tcp1.png) > **使用第三方 网络工具测试** ![tcp测试2](http://139.196.101.31:2080/images/tcp2.png) #### UDP 服务端编译 ```code // udp 服务默认在 9506 端口提供服务, 请自行将 9506 端口在防火墙放行,注意,这里的防火墙端口协议是 udp, 不要写错了,否则无法收发消息 firewall-cmd --zone=public --add-port=9506/udp --permanent firewall-cmd --complete-reload //编译 udpserver gcc -o udp_server ./udp_server.c ./libs/functions.c ./errors.c //启动 ./udpserver //编译 udpclient gcc -o udpclient ./udp_client.c ./udpclient ``` > **使用 udpserver 和 udpclient 测试** ![使用udpserver和udpclient测试](http://139.196.101.31:2080/images/udp1.png) > **使用第三方 网络工具测试** ![udp测试2](http://139.196.101.31:2080/images/udp2.png)