C socket如何獲取收到資料的事件

2022-07-04 12:32:10 字數 3791 閱讀 5232

1樓:光子炮

socket類並沒有封裝到lz說的那種地步。

你必須繫結埠,啟動監聽,呼叫receive方法,然後呼叫收到資料後的**。

若採用事件機制,你必須執行上述幾步,在receive方法之後釋出事件。

c# socket 如何完全傳送/接收資料

2樓:匿名使用者

比如b1:1-100是一個「資料包」,b2:0是一個「資料包」,每次傳送以「資料包」為單位傳送,「資料包」中包含「開始」和「結束」的標記,那麼 傳送端 b1,b2的執行可以想象成 資料包b1:

b1開始+1~100+b1結束,資料包b2:b2開始+0+b2結束,接受端 接受到資料包b1的"b1開始"標記時,建立b1執行緒,b1執行緒接受到1~10時,接受端 接受到資料包b2的"b2開始"標記,建立b2執行緒,b2執行緒接受0,b2執行緒接受"b2結束"標記,釋放b2執行緒,同時b1執行緒接受到11~100和"b1結束"標記釋放b1執行緒。

文字描述的不是很給力,**例子看看,希望能讓你明白。

3樓:天涯

你在傳送端 設定一個標誌,說明我傳送的東西已經傳送完畢,你接受的時候,判斷接受的網路流中是否有這個標誌,如果有,代表已經接收完整了。否則沒有。

打字不易,如滿意,望採納。

c#的socket程式設計中,怎麼獲取接受到得資料長度

4樓:日拱一卒行則將至

//測試url程式 客戶端和伺服器端在後面public class testurl

}客戶端程式

public class clientdemobrsocket.close();

pw.close();

br.close();

socket.close();}}

服務端程式

public class serverdemobrin.close();

in.close();

pw.close();

server.close();

socket.close();}}

5樓:

建議參照http協議自己設定頭資訊,不然不可能未卜先知的得到整個流中資料的長度

c#socket怎麼才能接收完整的資料

6樓:她是我的小太陽

receive的返回值是接收的位元組數,當是0時表示傳送結束,否則迴圈接收

緩衝區不用太大,8k或64k看情況

byte recvbytes = new byte[1024*8];

int ibytes = 1;

string strallhtml = "";

while (ibytes > 0)

7樓:匿名使用者

你在傳送端 設定一個標誌,說明我傳送的東西已經傳送完畢,你接受的時候,判斷接受的網路流中是否有這個標誌,如果有,代表已經接收完整了。否則沒有。

8樓:匿名使用者

如何判斷你接收的資料已經完了呢?假設你的緩衝區recvbytes大小小於你的資料,那剩下的資料如何處理呢?

所以這裡其實有2個問題。

1、資料小於等於緩衝區:那麼recvbytes應該就是你接收到的完整內容;

2、資料大於緩衝區:那麼就要分多次來接收,這裡就必須要確定你需要接收的資料的大小defaulttotal,當接收到的資料小於需要接收的資料時,多次執行receive,直到recvtotal==defaulttotal。

關於c#,100分+相送。c#中socket程式設計中,怎麼獲取接受到得資料長度

9樓:匿名使用者

這個.一般都是建立一個緩衝區

byte buffer = new byte[1024];

然後通過read迴圈去填充緩衝區的.直到read到buffer中的為null了..

最後你可以通過總的接受到的資料得到長度.不要妄想在接收完之前能得到資料長度.不現實的.

10樓:編號

伺服器端向客戶端傳送檔案之前,可以先向客戶端傳送一個資料大小的值。否則只能累計分包值得到檔案資料最終長度

receive方法中的幾個過載都是什麼啊

------------------------------------

完全可以自己看msdn

socket.receive (byte) 從繫結的 socket 套接字接收資料,將資料存入接收緩衝區。

由 .net compact framework 支援。

socket.receive (泛型 ilist) 從繫結的 socket 接收資料,將資料存入接收緩衝區列表中。

socket.receive (byte, socketflags) 使用指定的 socketflags,從繫結的 socket 接收資料,將資料存入接收緩衝區。

由 .net compact framework 支援。

socket.receive (泛型 ilist, socketflags) 使用指定的 socketflags,從繫結的 socket 接收資料,將資料存入接收緩衝區列表中。

socket.receive (byte, int32, socketflags) 使用指定的 socketflags,從繫結的 socket 接收指定位元組數的資料,並將資料存入接收緩衝區。

由 .net compact framework 支援。

socket.receive (泛型 ilist, socketflags, socketerror) 使用指定的 socketflags,從繫結的 socket 接收資料,將資料存入接收緩衝區列表中。

socket.receive (byte, int32, int32, socketflags) 使用指定的 socketflags,從繫結的 socket 接收指定的位元組數,存入接收緩衝區的指定偏移量位置。

由 .net compact framework 支援。

socket.receive (byte, int32, int32, socketflags, socketerror) 使用指定的 socketflags,從繫結的 socket 接收資料,將資料存入接收緩衝區。

11樓:強女幹未遂被日

函式原型:

public int receive (byte[ ] buffer, int size, socket flagssocketflags)

引數:buffer 表示接收到的資料的儲存位置;size表示要接收資料的大小;socketflagst提供socket訊息的常數值,具有允許按位組合其成員值的屬性。返回值為傳送到socket的位元組數。

關c# socket非同步接收,怎麼才能得到接收資料的大小呢

12樓:匿名使用者

receive 方法返回的就是讀取的長度,

13樓:匿名使用者

endread方法的返回值為長度

c# socket怎樣才可以把資料接收完整啊? 10

14樓:

、、、這樣,receive的返回值是接收的位元組數,當是0時表示傳送結束,否則迴圈接收

緩衝區不用太大,8k或64k看情況

byte recvbytes = new byte[1024*8];

int ibytes = 1;

string strallhtml = "";

while (ibytes > 0)

系統如何獲取ROOT許可權,如何獲取root許可權?

抱歉,無法提供相關的root操作,由於通過第三方軟體獲得root許可權,可以訪問和修改手機作業系統裡幾乎所有的檔案,但這樣操作有可能影響手機的穩定性,出現宕機 重啟等人為性故障。另外獲取許可權後一般對儲存器和cpu等主機板上主要部件引起不良。root屬於修改作業系統軟體,按照條例不屬於包修範圍。為了...

如何獲取手機root許可權,手機如何獲取ROOT 許可權

通過第三方軟體獲得root許可權,可以訪問和修改手機作業系統裡幾乎所有的檔案,但這樣操作有可能影響手機的穩定性,出現宕機 重啟等人為性故障。另外獲取許可權後一般對儲存器和cpu等主機板上主要部件引起不良。root屬於修改作業系統軟體,按照條例不屬於包修範圍。為了提升顧客滿意度,對root顧客提供免費...

csocket網路程式設計如何實現多客戶端和伺服器通訊

伺服器端 namespace socketserver 成功 serversocket.localendpoint.tostring 通過clientsoket傳送資料 thread mythread new thread listenclientconnect mythread.start con...