猿问

您好,请问在C++下recvfrom该如何使用?怎么操作呢?

c++一般不会这样写(struct sockaddr*)& ,这是C风格写法,这样在VS2005以上编译器上会报错,C++直接用( sockaddr*)。 我的确是在VS2005编译器运行的,可是我把(struct spcladdr*)&from 换成 (spcladdr*)from 这样运行还是报错 有3个错误:1>d:\my program\netmedia\udpserver1\udpserver.cpp(40) : error C2065: 'spcladdr' : undeclared identifier1>d:\my program\netmedia\udpserver1\udpserver.cpp(40) : error C2059: syntax error : ')'1>d:\my program\netmedia\udpserver1\udpserver.cpp(42) : error C2143: syntax error : missing ';' before '{' 源代码是这样的:if(recvfrom(socket1,buffer,sizeof buffer,0,(struct spcladdr*)&from,&fromlen) !=SOCKET_ERROR)

牛魔王的故事
浏览 254回答 2
2回答

慕村225694

你这个,spcladdr 编译器不认识,所以出错。一般是没有定义的结构,少include了文件。那么写和C/C++没有太多关系,关键是后面的那个东西是结构体,不是class就对了。要是class,只要你是专业的,什么都无所谓。

料青山看我应如是

最近测试程序中一直在用,给你点代码片段(1) sockaddr_in from;int from_len = sizeof(from);int rc = recvfrom(sock, buf, 65536, 0, (sockaddr*)&from, &from_len);if (rc > 0){//处理收到的数据}(2)memset(buf, 0, BUF_SIZE);int rc = recvfrom(pThis->m_udpSocket, buf, BUF_SIZE, 0, (sockaddr*)&from, &from_len);if (rc > 0){}
随时随地看视频慕课网APP
我要回答