gpt4 book ai didi

android - 通过WinSock2 Api的 "recv()"函数调用单次调用获取全部接收字节

转载 作者:行者123 更新时间:2023-11-28 06:02:14 25 4
gpt4 key购买 nike

我使用蓝牙 android api 在 android 设备中编写了一个客户端应用程序,在 windows pc 中使用 winSock2 api 编写了服务器应用程序。现在我的问题是 recv() 在一次调用中不能接收超过 1011 个字节。这是发送和接收方法的代码-

Android 数据发送代码如下:

byte[] testByte = new byte[1024];
outputStream.write(testByte );

Windows接收码是

char response[4096];
//acceptedSocket: client socket accepted by server
//protocol- BTHPROTO_RFCOMM
//SocketType - SOCK_STREAM;
receivedBytes = recv(acceptedSocket, response, sizeof(response), 0);

这里 receiveBytes = 1011。所以我必须再次调用 recv() 来接收接下来的 13 个字节。

现在,如果我将带有标志 MSG_WAITALLrecv() 函数调用和响应数组的大小更改为 1024,则它返回 receivedBytes = 1024 字节,我可以在一次调用中接收整个 1024 字节。

In that case, i have to send size of the data first from the client app and then have to send the data. So I need to transmit two times from Android client app.

但我想在 recv() 的一次调用中接收整个 1024 字节,并从 Android 客户端 PP 传输一次;

我怎样才能做到这一点?

提前致谢。

最佳答案

你不能。

recv() 未指定一次传输超过一个字节。

你必须循环。

关于android - 通过WinSock2 Api的 "recv()"函数调用单次调用获取全部接收字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33034107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com