vc中socket通訊雙方傳送和接收結構體型資料

2025-02-14 10:55:27 字數 3288 閱讀 7993

1樓:孤松獨海

比如客戶端這邊,將接收到的內容存在了 char* temp;變數裡面。

那麼就可以 msg nn;;;

temp+=strlen(;

這樣就可以了,因為對於字元指標賦值,如下。

char *temp="sdfsdf123\0wdfsdf\0";

couttemp+=strlen(a)+1;

char *b=temp;

2樓:網友

struct msg

char msgtype;

char msgfrom[1024];

char msgcontent[1024];

定義的時候要將字串放在結構體內部,你那樣做就放到結構體外部去了。

3樓:網友

你這樣做不好。

客戶端將收不到"sss"和"hello"

vc++ socket程式設計...

4樓:何處淬吳鉤

聊天?聊天室很容易!點對點的字串傳送你能解決,那麼聊天室也沒什麼問題,只不過是多個點對點的字串而已(乙個sever對多個client)。

5樓:夢想窗外

聊天程式的例子,要不要?要就hi我。。

6樓:網友

飛鴿網上似乎有原始碼的。

而且你沒有提出什麼具體需要回答的問題,不知道怎麼回答你啊,如果在寫的時候遇到什麼不明白的東西可以發上來,現在真無法回答你。

求vc++高手解惑。tcp協議,socket建立連線之後,如何以幀結構傳送資料。

7樓:水刃星辰

1全部一次只能發乙個結構體,想發多個結構體要麼將那些結構體組成乙個大的結構體,要麼就迴圈實現。

一位元組對其應該就是說通訊雙方的結構體中元素的結構內容要一致,這樣在讀取的時候才不會出現錯誤。

因為結構體在網路傳輸中是二進位位元位傳播的。

vc 中socket通訊的問題

8樓:網友

這個東西有點難度的,要設定乙個訊息佇列,然後將所有應答的客戶端乙個乙個回覆訊息,主要的思想就是連線乙個就建立乙個應答,然後等待客戶端的訊息,收到訊息後就投送到佇列中,然後處理佇列中的訊息,要與定義隊佇列的的數量大小,判斷佇列是否滿了,滿了則做乙個患從區,不想做緩衝區直接返回乙個訊息即可。

vc++ 多執行緒程式設計 socket通訊

9樓:網友

你給客戶端傳送資料是用send麼。

如果沒sleep的話,你建立了乙個新執行緒,建立新執行緒的同時,當前執行緒悶大讓仿賣也在執行,socket都螞局被你關掉了,還怎麼send??

執行緒跟函式是不同的,函式是等呼叫結束後才執行下乙個語句。

10樓:網友

int send_num=::send(clientsocket,sztext,strlen(sztext),0); 應該要修改為:

int send_num=::send(clientsocket,sztext,strlen(sztext)+1,0);

不過備配,笑逗這與你的問題無仿公升指關。

vc struct 用socket 傳送 怎麼接

11樓:常常暈倒

我剛遇到你這個問題。

解決的方法是在伺服器端也宣告乙個同樣的結構來接收。

如果還有什麼問題再提!

12樓:網友

你的name和pass應該定義成字串陣列吧。

伺服器端使用同樣的結構,然後強制轉換讀出來的記憶體為你的結構就可以了。

13樓:手機使用者

恩,樓上說的對,在伺服器端也宣告這樣個結構體,在recv中填上這個結構體的例項。

14樓:網友

// 在底層同樣定義sendpack結構體。

然後呼叫recv函式。

sendpack *buf;

recv(s, (char*)buf, sizeof(sendpack), 0);/其中s是你的socket

vc++socket通訊資料丟失問題!!

15樓:網友

這個讀法好彆扭,應該是按每次緩衝區資料長度來讀資料,直到緩衝區資料長度為0為止就退出讀取資料吧。

16樓:匿名使用者

你的程式有問題。

用strlen來判斷接收的長度很危險,如果一次接收的資料中間沒有0,就會訪問越界造成異常,為什麼不直接用recvfrom的返回值?

而且如果資料的開頭或中間有0,你就會把後面的資料丟棄。

另外,沒有看到你如何判斷並退出接收,似乎是個死迴圈。應該判斷接收長度是否小於等於0作為結束條件。

關於vc socket通訊程式設計有哪些書?

17樓:收音機

socket這方面的書其實還很多,主要是網路方面的,都會包括上socket程式設計方面的。可以去圖書館找一下。

18樓:網友

vc有本權威的,名字就叫windows網路程式設計。

用vc的socket程式設計,傳送資料為16位

19樓:屍鬼封盡

這個簡單,直接傳送即可:

方法一(c++風格):

unsigned short buffer 這是你的buffer(緩衝區)

send ( client , reinterpret_cast(buffer) ,sizeof ( buffer ) 0 );

方法二(c風格):

unsigned short buffer;

send ( client , char *)buffer , sizeof ( buffer ) 0 );

接收的時候也是,直接接收即可:

unsigned short recvdata;

recv ( server , reinterprect_cast(recvdata) ,接收的大小 , 0 );

有什麼不懂請追問^_^

祝你學習愉快^_^

20樓:匿名使用者

可以先將unsigned short 轉換成cstring用format 然後把cstring轉換成const char* 用getbuffer(0); 試試?

安卓手機如何通過藍芽進行socket通訊

uuid值出現錯誤。看一下android有關bluetooth的api,用於普通藍芽介面卡和android手機藍芽模組連線的,而且這 個uuid的值必須是00001101 0000 1000 8000 00805f9b34fb。這個是android的api上面說明的.connect 在連線的時候,a...

VC2005中Cview和Doc怎麼關聯起來?

樓主寫的 基本是正確的,那個assert報錯多半是應為你的文件和檢視沒有正確關聯。關聯文件和檢視需要使用cmultidoctemplate 或者 csingledoctemplate 這個在initinstance的時候就應該做了。一般會是這種形式 註冊應用程式的文件模板。文件模板。將用作文件 框架...

在VC中如何聲名和使用API

包括api的標頭檔案以及相應的lib,dll就可以了吧。比如你要使用sendmessge,包括即可。具體看看msdn就可以。比如sendmessage function information minimum dll version header declared in includeimport l...