Public Shared Sub Read_Callback(ar As IAsyncResult)
Dim so As StateObject = CType(ar.AsyncState, StateObject)
Dim s As Socket = so.workSocket
Dim read As Integer = s.EndReceive(ar)
If read > 0 Then
so.sb.Append(Encoding.ASCII.GetString(so.buffer, 0, read))
s.BeginReceive(so.buffer, 0, StateObject.BUFFER_SIZE, 0, New AsyncCallback(AddressOf Async_Send_Receive.Read_Callback), so)
If so.sb.Length > 1 Then
'All the data has been read, so displays it to the console
Dim strContent As String
strContent = so.sb.ToString()
Console.WriteLine([String].Format("Read {0} byte from socket" + "data = {1} ", strContent.Length, strContent))
End If
s.Close()
End If
End Sub
這是相容性 API。 不建議使用
APM
(
Begin*
和
End*
) 方法來進行新的開發。 請改用
Task
以 為基礎的對等專案。
您可以傳遞實作
AsyncCallback
的回呼給
BeginReceive
,以取得作業完成的通知。 請注意,如果基礎網路堆疊以同步方式完成作業,回呼將會在呼叫
BeginReceive
期間內嵌執行。 在此情況下,
CompletedSynchronously
傳回
IAsyncResult
之 上的 屬性會設定為
true
,表示方法會以同步方式完成。
AsyncState
使用 的
IAsyncResult
屬性,取得傳遞至
BeginReceive
方法的狀態物件。
BeginReceive
非同步作業必須藉由呼叫
EndReceive
方法來完成。 一般而言,委派會叫用
AsyncCallback
方法。
EndReceive
將會封鎖呼叫執行緒,直到作業完成為止。
Socket
關閉 以解除擱置
BeginReceive
中的 。
Close
在非同步作業進行時呼叫 方法時,會呼叫提供給 方法的
BeginReceive
回呼。 後續呼叫
EndReceive
方法會在 .NET 7) 或
SocketException
.NET 7+) 上的 (之前擲回
ObjectDisposedException
(,以指出作業已取消。
如果您收到
SocketException
,請使用
SocketException.ErrorCode
屬性來取得特定的錯誤碼。
當該執行緒結束時,指定的執行緒所起始的所有 I/O 都會取消。 如果執行緒在作業完成之前結束,暫止的非同步作業可能會失敗。
state
是使用者定義類別的具現化。
在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱
.NET Framework 中的網路追蹤
。
系統會針對非同步
Socket
方法快取執行內容 (安全性內容、模擬的使用者和呼叫內容) 。 在第一次使用特定內容 (特定非同步
Socket
方法、特定
Socket
實例和特定回呼) 之後,後續使用該內容將會看到效能改善。
AsyncCallback
Connect(EndPoint)
BeginReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)
做為回呼方法,委派封送處理
非同步用戶端通訊端範例
非同步伺服器通訊端範例
public:
IAsyncResult ^ BeginReceive(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode, AsyncCallback ^ callback, System::Object ^ state);
public:
IAsyncResult ^ BeginReceive(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags flags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % error, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult? BeginReceive (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback? callback, object? state);
public IAsyncResult BeginReceive (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback callback, object state);
public IAsyncResult BeginReceive (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags flags, out System.Net.Sockets.SocketError error, AsyncCallback callback, object state);
member this.BeginReceive : byte[] * int * int * System.Net.Sockets.SocketFlags * SocketError * AsyncCallback * obj -> IAsyncResult
member this.BeginReceive : byte[] * int * int * System.Net.Sockets.SocketFlags * SocketError * AsyncCallback * obj -> IAsyncResult
Public Function BeginReceive (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, ByRef errorCode As SocketError, callback As AsyncCallback, state As Object) As IAsyncResult
Public Function BeginReceive (buffer As Byte(), offset As Integer, size As Integer, flags As SocketFlags, ByRef error As SocketError, callback As AsyncCallback, state As Object) As IAsyncResult
這是相容性 API。 不建議使用
APM
(
Begin*
和
End*
) 方法來進行新的開發。 請改用
Task
以 為基礎的對等專案。
您可以傳遞實作
AsyncCallback
的回呼給
BeginReceive
,以取得作業完成的通知。 請注意,如果基礎網路堆疊以同步方式完成作業,回呼將會在呼叫
BeginReceive
期間內嵌執行。 在此情況下,
CompletedSynchronously
傳回
IAsyncResult
之 上的 屬性會設定為
true
,表示方法會以同步方式完成。
AsyncState
使用 的
IAsyncResult
屬性,取得傳遞至
BeginReceive
方法的狀態物件。
BeginReceive
非同步作業必須藉由呼叫
EndReceive
方法來完成。 一般而言,委派會叫用
AsyncCallback
方法。
EndReceive
將會封鎖呼叫執行緒,直到作業完成為止。
Socket
關閉 以解除擱置
BeginReceive
中的 。
Close
在非同步作業進行時呼叫 方法時,會呼叫提供給 方法的
BeginReceive
回呼。 後續呼叫
EndReceive
方法會在 .NET 7) 或
SocketException
.NET 7+) 上的 (之前擲回
ObjectDisposedException
(,以指出作業已取消。
如果您收到
SocketException
,請使用
SocketException.ErrorCode
屬性來取得特定的錯誤碼。
當該執行緒結束時,指定的執行緒所起始的所有 I/O 都會取消。 如果執行緒在作業完成之前結束,暫止的非同步作業可能會失敗。
state
是使用者定義類別的具現化。
在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱
.NET Framework 中的網路追蹤
。
系統會快
Socket
取非同步方法 (安全性內容、模擬使用者和呼叫內容) 的執行內容。 在第一次使用特定內容 (特定非同步
Socket
方法、特定
Socket
實例和特定回呼) 之後,該內容的後續使用將會看到效能改善。
AsyncCallback
Connect(EndPoint)
BeginReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)
做為回呼方法,委派封送處理
非同步用戶端通訊端範例
非同步伺服器通訊端範例
public:
IAsyncResult ^ BeginReceive(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginReceive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback? callback, object? state);
public IAsyncResult BeginReceive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback callback, object state);
[System.CLSCompliant(false)]
public IAsyncResult BeginReceive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback callback, object state);
member this.BeginReceive : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * AsyncCallback * obj -> IAsyncResult
[<System.CLSCompliant(false)>]
member this.BeginReceive : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * AsyncCallback * obj -> IAsyncResult
Public Function BeginReceive (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags, callback As AsyncCallback, state As Object) As IAsyncResult
這是相容性 API。 不建議使用
APM
(
Begin*
和
End*
) 方法來進行新的開發。 請改用型對
Task
等專案。
您可以傳遞實作
AsyncCallback
BeginReceive
的回呼,以取得作業完成的通知。 請注意,如果基礎網路堆疊以同步方式完成作業,則會在 呼叫
BeginReceive
期間內嵌執行回呼。 在此情況下,
CompletedSynchronously
傳回
IAsyncResult
的 屬性會設定為
true
,以指出方法已同步完成。
AsyncState
使用 的
IAsyncResult
屬性,取得傳遞至
BeginReceive
方法的狀態物件。
非同步
BeginReceive
操作必須藉由呼叫
EndReceive
方法來完成。 一般而言,委派會叫
AsyncCallback
用 方法。
EndReceive
將會封鎖呼叫執行緒,直到作業完成為止。
Socket
關閉 以解除擱置
BeginReceive
的 。
Close
在非同步作業進行時呼叫 方法時,會呼叫提供給 方法的
BeginReceive
回呼。 方法的後續呼叫
EndReceive
會在 .NET 7) 或
SocketException
.NET 7+) 上的 (之前擲回
ObjectDisposedException
(,以指出作業已取消。
如果您收到
SocketException
,請使用
SocketException.ErrorCode
屬性來取得特定的錯誤碼。
當該執行緒結束時,由指定執行緒起始的所有 I/O 都會取消。 如果執行緒在作業完成之前結束,暫止的非同步作業可能會失敗。
state
是使用者定義類別的具現化。
在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱
.NET Framework 中的網路追蹤
。
系統會快
Socket
取非同步方法 (安全性內容、模擬使用者和呼叫內容) 的執行內容。 在第一次使用特定內容 (特定非同步
Socket
方法、特定
Socket
實例和特定回呼) 之後,該內容的後續使用將會看到效能改善。
AsyncCallback
Connect(EndPoint)
BeginReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)
做為回呼方法,委派封送處理
非同步用戶端通訊端範例
非同步伺服器通訊端範例
public:
IAsyncResult ^ BeginReceive(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult? BeginReceive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback? callback, object? state);
public IAsyncResult BeginReceive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback callback, object state);
[System.CLSCompliant(false)]
public IAsyncResult BeginReceive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback callback, object state);
member this.BeginReceive : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * SocketError * AsyncCallback * obj -> IAsyncResult
[<System.CLSCompliant(false)>]
member this.BeginReceive : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * SocketError * AsyncCallback * obj -> IAsyncResult
Public Function BeginReceive (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags, ByRef errorCode As SocketError, callback As AsyncCallback, state As Object) As IAsyncResult
這是相容性 API。 不建議使用
APM
(
Begin*
和
End*
) 方法來進行新的開發。 請改用型對
Task
等專案。
您可以傳遞實作
AsyncCallback
BeginReceive
的回呼,以取得作業完成的通知。 請注意,如果基礎網路堆疊以同步方式完成作業,則會在 呼叫
BeginReceive
期間內嵌執行回呼。 在此情況下,
CompletedSynchronously
傳回
IAsyncResult
的 屬性會設定為
true
,以指出方法已同步完成。
AsyncState
使用 的
IAsyncResult
屬性,取得傳遞至
BeginReceive
方法的狀態物件。
非同步
BeginReceive
操作必須藉由呼叫
EndReceive
方法來完成。 一般而言,委派會叫
AsyncCallback
用 方法。
EndReceive
將會封鎖呼叫執行緒,直到作業完成為止。
Socket
關閉 以解除擱置
BeginReceive
的 。
Close
在非同步作業進行時呼叫 方法時,會呼叫提供給 方法的
BeginReceive
回呼。 方法的後續呼叫
EndReceive
會在 .NET 7) 或
SocketException
.NET 7+) 上的 (之前擲回
ObjectDisposedException
(,以指出作業已取消。
如果您收到
SocketException
,請使用
SocketException.ErrorCode
屬性來取得特定的錯誤碼。
當該執行緒結束時,由指定執行緒起始的所有 I/O 都會取消。 如果執行緒在作業完成之前結束,暫止的非同步作業可能會失敗。
state
是使用者定義類別的具現化。
在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱
.NET Framework 中的網路追蹤
。
系統會快
Socket
取非同步方法 (安全性內容、模擬使用者和呼叫內容) 的執行內容。 在第一次使用特定內容 (特定非同步
Socket
方法、特定
Socket
實例和特定回呼) 之後,該內容的後續使用將會看到效能改善。
AsyncCallback
Connect(EndPoint)
BeginReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)
做為回呼方法,委派封送處理
非同步用戶端通訊端範例
非同步伺服器通訊端範例