[英]Unable to receive the data (recv in cpp) put into socket(write() in java)
我是套接字編程的新手,以便測試某些情況,我正在使用Java端客戶端通過套接字發送整數數據,並且希望ot在cpp的服務器端接收該數據。
我在客戶端(java)上的代碼如下所示
out=new DataOutputStream(s.getOutputStream());
ar=1;
le=1;
out.writeInt(ar);
out.flush();
out.writeInt(le);
out.flush();
和即時通訊使用cpp中的recv函數接收此數據。 cpp端的代碼看起來像
if (int(recv(acceptFD, &number, sizeof(int), 0)) != sizeof(int))
{
ALOGE ("error reading on socket: number of Args: %d,reutrned value =%d\n",number);
return;
}
for (int i = 0; i < number; i++)
{
int len;
if (recv(acceptFD, &len, sizeof(int), 0) != sizeof(int))
{
ALOGE ("error reading on socket: Len of Args: expected length :%d\n",len);
freeDebugCallbackArgs(i, args);
return;
}
並且將日志顯示為
E / RILC(235):套接字上讀取錯誤:Args數:16777216,返回值= -1073741824 E / RILC(235):套接字上讀取錯誤:Args透鏡:預期長度:1075093557
如果有人發布答案,這將是一個很大的幫助。 謝謝
我tong然懷疑這是字節順序的問題。
以十六進制表示的數字16777206為0x01000000,在小端表示中為1677206,在大端表示中為1。
將您的數字讀取為字節數組,並包括代碼以補償Java源代碼和C目標代碼之間不同的字節順序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.