- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在我的 C:\Windows\System32\drivers\etc\service 文件中,我看到了
回声 7/TCP回显 7/udp
所以我写了一个程序来测试getservbyname
#include <stdio.h>
#include <winsock2.h>
#include <iostream>
#pragma comment(lib,"ws2_32.lib") // winsock library
using namespace std;
int main(int argc, char *argv[])
{
WSADATA wsa;
SOCKET s;
sockaddr_in server;
servent *serverInfo;
cout << "Initializing Winsock...." << endl;
if (WSAStartup(MAKEWORD(2,2), &wsa) != 0) {
cout << "Failed. Error code: " << WSAGetLastError();
return 1;
}
cout << "initialized." << endl;
serverInfo = getservbyname("echo", "tcp");
cout << "service echo:: s_name is " << serverInfo->s_name << endl;
cout << "service echo:: s_aliases is " << serverInfo->s_aliases << endl;
cout << "service echo:: s_port is " << serverInfo->s_port << endl;
cout << "service echo:: s_proto is " << serverInfo->s_proto << endl;
return 0;
}
当我运行它时,下面是显示的结果:
Initializing Winsock....
initialized.
service echo:: s_name is echo
service echo:: s_aliases is 00724F08
service echo:: s_port is 1792
service echo:: s_proto is tcp
我的问题是为什么 s_port 是 1792 而不是 7?我在文件服务中找不到 1792。有人可以解释一下吗?非常感谢。
最佳答案
7*256=1792
它是网络字节顺序。尝试改为打印 ntohs(serverInfo->s_port)。
如果你打算用它来构建一个 sockaddr_in
,你可以直接将它复制到 sin_port
,因为那也是网络字节顺序。
关于c++ - 为什么 getservbyname 不返回正确的端口号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25944563/
我真的不知道在 getservbyname() 的第一个参数中写什么. 我读到,如果我给出名称和协议(protocol)(例如 TCP),我会得到一个带有信息的结构体返回给服务器,但我应该在那里写什么
我不知道 getservbyname 的正确答案是什么。 句子sp = getservbyname("example", "tcp") a.客户端使用它来获取服务的端口。 b.只有当我们有权限修改/e
在我的 C:\Windows\System32\drivers\etc\service 文件中,我看到了 回声 7/TCP回显 7/udp 所以我写了一个程序来测试getservbyname #inc
现在我在使用 linux mint 中的 getservbyname() 函数时遇到了一些麻烦,每次我尝试获取端口时它都会返回 NULL 而我却不知道不知道会是什么 extern struct
我正在尝试使用 getservbyname() C 库调用,我的使用方式如下: #include #include #include int main() { struct servent
我是一名优秀的程序员,十分优秀!