【发布时间】:2021-11-30 00:02:30
【问题描述】:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netdb.h>
#include <netinet/in.h>
#include <iostream>
#include <string>
int main(int argc, char *argv[])
{
int sock;
int recvsize;
char pack[1024];
struct sockaddr_in sAddr;
struct hostent *sHost;
sHost = gethostbyname("time.google.com");
if(sHost == NULL){
return 0;
}
sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
memset(&sAddr, 0, sizeof(sAddr));
sAddr.sin_family = AF_INET;
memcpy(&sAddr.sin_addr, sHost->h_addr_list[0], sizeof(sAddr.sin_addr));
sAddr.sin_port = htons(123);
if(connect(sock, (struct sockaddr*)&sAddr, sizeof(sAddr)) == -1){
perror("connect error");
return -1;
}
std::cout << "Connect" << std::endl;
recvsize = recv(sock, pack, sizeof(pack), 0);
std::cout << "Get Size:" << recvsize << std::endl;
std::cout << pack << std::endl;
close(sock);
return 0;
}
这是我的 ntp 客户端代码。
我尝试连接并从 ntp 服务器获取白天消息。
但是当我运行这段代码时,什么都不会发生。
连接似乎正常工作,似乎没有发生连接失败或超时。
我的环境:
主要操作系统:Windows10
子操作系统:ubuntu20.04 LTS(在 VirtualBox 6.1 中运行)
编译器:g++ 4.8.4
添加说明:
抱歉,我忘记添加标题了。
当这个程序运行时,它显示“连接”。
并且,无需退出即可进入待机模式。不冷。
【问题讨论】:
-
为什么提供没有标题的样本?发布完整代码有这么难吗?这么多年还是一样……
-
所以程序结束时没有错误输出或成功输出?并且:您是否在调试器中运行了代码?
-
如果没有人回答,我应该指出代码挂在这一行 "sHost = gethostbyname("time.google.com");"
-
@SChepurin - 此代码是完整的代码。这只是一个确认连接方法的代码。
-
@Peter - 恢复 Monica - 不,程序没有结束。在等待接收时停止。
标签: c++ ubuntu-20.04 ntp