Ai
1 Star 0 Fork 0

lsnmjp/code of cpp Linux 算法

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
UDP_Client.cc 1.80 KB
一键复制 编辑 原始数据 按行查看 历史
lsnmjp 提交于 2025-06-19 13:13 +08:00 . echo_server_v1
#include "UDP_Client.hpp"
using namespace LogModule;
int main(int argc,char* argv[])
{
ENABLE_CONSOLE_LOG;
if(argc!=3)
{
LOG(LogLevel::ERROR)<<"Usage "<<argv[0]<<": 127.0.0.1 8080";
Die(1);
}
//0.获取服务器的套接字信息
std::string server_ip = argv[1];
uint16_t server_port = std::stoi(argv[2]);
//1.创建套接字
int sock_fd = socket(AF_INET,SOCK_DGRAM,0);
if(sock_fd<0)
{
LOG(LogLevel::FATAL)<<"socket fail";
Die(2);
}
//2.填写server信息
//因为后续要在sendto中直接给server通信
sockaddr_in server_socket;
bzero(&server_socket, sizeof(sockaddr_in));
server_socket.sin_family = AF_INET;
server_socket.sin_port = ::htons(server_port);
server_socket.sin_addr.s_addr = ::inet_addr(server_ip.c_str());
// //3.进行bind,并且设置进内核
// int ret = bind(sock_fd,CONV(&server_socket),sizeof(server_socket));
while(true)
{
std::cout<<"Please Enter"<<std::endl;
std::string Message;
std::getline(std::cin,Message);
int n = ::sendto(sock_fd,Message.c_str(),Message.length(),0,CONV(&server_socket),sizeof(server_socket));
if(n<0)
{
LOG(LogLevel::ERROR)<<"sendto fail";
exit(3);
}
//用于接受服务器端的echo,作为输出型参数。
//LOG(LogLevel::DEBUG)<<"sendto success";
struct sockaddr_in temp;
socklen_t len = sizeof(temp);
char buffer[SIZE];
int ret = ::recvfrom(sock_fd,buffer,SIZE-1,0,CONV(&temp),&len);
if(ret>0)
{
buffer[ret] = 0;
LOG(LogLevel::INFO)<<"Server echos@ "<<buffer;
}
else
{
LOG(LogLevel::ERROR)<<"client recv fail";
}
}
return 0;
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/lsnmjp/code-of-cpp-linux-algorithm.git
git@gitee.com:lsnmjp/code-of-cpp-linux-algorithm.git
lsnmjp
code-of-cpp-linux-algorithm
code of cpp Linux 算法
master

搜索帮助