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)
2 回答
慕村225694
TA贡献1880条经验 获得超4个赞
你这个,spcladdr 编译器不认识,所以出错。
一般是没有定义的结构,少include了文件。
那么写和C/C++没有太多关系,关键是后面的那个东西是结构体,不是class就对了。
要是class,只要你是专业的,什么都无所谓。
料青山看我应如是
TA贡献1772条经验 获得超8个赞
最近测试程序中一直在用,给你点代码片段
(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)
{
}
- 2 回答
- 0 关注
- 253 浏览
添加回答
举报
0/150
提交
取消