之前我问过这个问题并且没有解决方案(仍有问题)。我很难过,因为函数返回没有错误,没有发送数据!此代码适用于Linux ... VxWorks版本不起作用(sendto不发送,但它返回时没有错误)。
概要 - 我正在编写一个简单的echo服务器 - 服务器成功接收 数据(来自x86盒子)并声称它成功发回。 但是客户端上没有收到数据(x86上的netcat)。这个 代码在PowerPC盒子上的VxWorks 5.4上运行......
我是以某种方式缓冲的UDP数据?
另一项任务是否可以阻止sendto发送? (不要在这里进行疯狂的追逐,但是我的任务是以正常的优先级为我的应用程序,即在网络任务等关键任务之下......所以这很好)。
VxWorks可以缓冲我的UDP数据吗?
我已经设置了我的路由表... pinging有效!
没有防火墙AFAIK ......
sendto有什么细微差别以及什么会妨碍我的数据 到达客户......
while(1)
{
readlen = recvfrom(sock, buf, BUFLEN, 0, (struct sockaddr *) &client_address, &slen);
if (readlen == ERROR)
{
printf("RECVFROM FAILED()/n");
return (ERROR);
}
printf("Received %d bytes FROM %s:%d\nData: %s\n\n",
readlen, inet_ntoa(client_address.sin_addr),
ntohs(client_address.sin_port), buf);
// Send it to right back to the client using the open UDP socket
// but send it to OUTPORT
client_address.sin_port = htons(OUTPORT);
// Remember slen is a value (not an address ... in, NOT in-out)
sendlen = sendto(sock, buf, BUFLEN, 0, (struct sockaddr*)&client_address, slen);
// more code ....
}