为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C++ C
牛魔王的故事 2021-11-04 07:07:35
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,只要你是专业的,什么都无所谓。

查看完整回答
反对 回复 2021-11-09
?
料青山看我应如是

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)
{
}



查看完整回答
反对 回复 2021-11-09
  • 2 回答
  • 0 关注
  • 253 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信