@media (max-width: 980px) {
first-body:hover{
height:400px;
background-size:800px;
-webkit-transform: scale(1,1);
-moz-transform:scale(1,1);
opacity:.9;
-webkit-opacity: .9;
-moz-opacity: .9;
transition: all .3s ease-in-out;
}
}
我在void *rtp_rec()
{
memset(rtpbuf, 0, sizeof(rtpbuf));
unsigned char rtpbuf[2024]="";
while(1)
{
receive = recvfrom(sock1, rtpbuf,sizeof(rtpbuf) ,0,(struct sockaddr*)&serverrtp,(socklen_t*)&sizeof(serverrtp););
n = sendto(sock2,rtpbuf,strlen(rtpbuf),0,(struct sockaddr *)&sendtoother,sizeof(sendtoother));
}
return 0;
}
////////////////////////////////////////////////////////////////////////////
上使用套接字(sock1)上的rtpbuf(buffer)
连续(逐字节)接收180字节数据包。
我希望将180字节的相同数据包发送到另一个
socket(sock2)使用recvfrom()
。
但我的sendto()
函数发送1字节数据包,sendto()
也逐字节地接收数据。
请提出一些逻辑。
答案 0 :(得分:1)
您需要检查recvfrom()
的值以确保没有错误,并确保您收到了正确的字节数。此外,您可能希望发送尽可能多的字节,而不是使用strlen(rtpbuf)
,以防您在接收数据中有空字节。
receive = recvfrom(sock1, rtpbuf,sizeof(rtpbuf) ,0,(struct sockaddr*)&serverrtp,(socklen_t*)&sizeof(serverrtp));
if (receive == -1) {
perror("recvfrom failed");
} else {
printf("received %d bytes\n", receive);
n = sendto(sock2,rtpbuf,receive,0,(struct sockaddr *)&sendtoother,sizeof(sendtoother));
}