我对c ++还是很陌生,对Java有更多的经验,所以我不完全了解c ++变量声明和指针。
话虽这么说,我正在尝试将套接字连接到服务器,为此我需要使用getaddrinfo()来获取地址,并且我已经定义了(用数字代替x):
const char* ipAddress = "xx.xx.xx.xxx";
const char* port = "xxxx";
const struct addrinfo *hints, *res;
(我只添加了const,因为我认为它可以解决我的问题)
但是,当我尝试致电
int result = getaddrinfo(ipAddress,port,NULL,res);
我收到错误消息“没有匹配的函数来调用getaddrinfo()”。
我在这里做什么错了?
答案 0 :(得分:0)
在C / C ++中,指针类似于对对象或数组的Java引用(实际上Java引用是侵入式智能指针),这实际上是内存中的地址,例如size_t
整数-unsigned int
代表32位或unsigned long long
代表64位CPU。
指针类型向编译器和程序员显示-在后台知道字节如何读取或写入的数据类型。与Java不同,任何类型的数据都可以位于堆,堆栈或ROM(BIOS)视频内存等地方,Java仅将堆用于对象和数组。
您可以使用&
运算符在堆栈中存储的任何对象上获取地址,包括指针地址,即获取[type]**
租用是C / C ++的客户端套接字连接的示例
struct addrinfo hints = {AF_UNSPEC,SOCK_STREAM};
struct addrinfo *res;
// &hints takes address of hints structure i.e. const addrinfo*
// &res takes address of res pointer i.e. const addrinfo**
getaddrinfo("localhost","80", &hints, &res);
int s = socket(res->ai_family,res->ai_socktype,res->ai_protocol);
connect(s,res->ai_addr,res->ai_addrlen);