回覆列表
  • 1 # 使用者5728027425580

    在網路通訊過程中往往涉及一些有關聯的引數傳遞,例如陣列,結構體之類的。對於結構體其實方法挺簡單,由於結構體物件在記憶體中分配的空間都是連續的,所以可以將整個結構體直接轉化成字串傳送,到了接收方再將這個字串還原成結構體就大功告成了。   首先,我們建立一個結構體。   structUsrData{   charusr_id[16];   charusr_pwd[16];   charusr_nickname[16];   };   當然,這個結構體在傳送方與接收方都必須宣告。   接下來建立物件並初始化,然後傳送。   UsrDatasendUser;   memcpy(sendUser.usr_id,“100001”,sizeof(“100001”));   memcpy(sendUser.usr_pwd,“123456”,sizeof(“123456”));   memcpy(sendUser.usr_nickname,“Rock”,sizeof(“Rock”));   send(m_socket,(char*)&sendUser,sizeof(UsrData),0);   這樣傳送方就已經將這個mUser物件以字串的形式傳送出去了。   最後在接收方做接收。   charbuffer[1024];   UsrDatarecvUser;   recv(m_socket,buffer,sizeof(buffer),0);   memcpy(&recvUser,buffer,sizeof(buffer));   這樣得到的recvUser物件裡的資料與sendUser相同了。具體原因其實很簡單,就是因為結構體物件的記憶體區域連續,同時每個成員的區塊大小都分配好了,當接收完自己的區塊,其實自己的資料已經接收完成。

  • 中秋節和大豐收的關聯?
  • cbf190tr引數配置?