簡體   English   中英

無法接收放入套接字的數據(cpp中的recv)(java中的write())

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM