Socket.AcceptAsync Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Overload
AcceptAsync() |
Menerima koneksi masuk. |
AcceptAsync(Socket) |
Menerima koneksi masuk. |
AcceptAsync(SocketAsyncEventArgs) |
Memulai operasi asinkron untuk menerima upaya koneksi masuk. |
AcceptAsync(CancellationToken) |
Menerima koneksi masuk. |
AcceptAsync(Socket, CancellationToken) |
Menerima koneksi masuk. |
AcceptAsync()
- Sumber:
- Socket.Tasks.cs
- Sumber:
- Socket.Tasks.cs
- Sumber:
- Socket.Tasks.cs
Menerima koneksi masuk.
public:
System::Threading::Tasks::Task<System::Net::Sockets::Socket ^> ^ AcceptAsync();
public System.Threading.Tasks.Task<System.Net.Sockets.Socket> AcceptAsync ();
member this.AcceptAsync : unit -> System.Threading.Tasks.Task<System.Net.Sockets.Socket>
Public Function AcceptAsync () As Task(Of Socket)
Mengembalikan
Tugas asinkron yang selesai dengan Soket yang diterima.
Pengecualian
Operasi yang tidak valid diminta. Pengecualian ini terjadi jika penerimaan Socket tidak mendengarkan koneksi atau soket yang diterima terikat.
Anda harus memanggil Bind(EndPoint) metode dan Listen(Int32) sebelum memanggil AcceptAsync(SocketAsyncEventArgs) metode .
Pengecualian ini juga terjadi jika soket sudah tersambung atau operasi soket sudah berlangsung menggunakan parameter yang ditentukan e
.
Terjadi kesalahan saat mencoba mengakses soket.
Sudah Socket ditutup.
Keterangan
Metode ini disimpan dalam tugas yang mengembalikan semua pengecualian non-penggunaan yang dapat dilemparkan oleh rekan sinkron metode. Jika pengecualian disimpan ke dalam tugas yang dikembalikan, pengecualian tersebut akan dilemparkan saat tugas ditunggu. Pengecualian penggunaan, seperti ArgumentException, masih dilemparkan secara sinkron. Untuk pengecualian yang disimpan, lihat pengecualian yang dilemparkan oleh Accept().
Berlaku untuk
AcceptAsync(Socket)
- Sumber:
- Socket.Tasks.cs
- Sumber:
- Socket.Tasks.cs
- Sumber:
- Socket.Tasks.cs
Menerima koneksi masuk.
public:
System::Threading::Tasks::Task<System::Net::Sockets::Socket ^> ^ AcceptAsync(System::Net::Sockets::Socket ^ acceptSocket);
public System.Threading.Tasks.Task<System.Net.Sockets.Socket> AcceptAsync (System.Net.Sockets.Socket? acceptSocket);
member this.AcceptAsync : System.Net.Sockets.Socket -> System.Threading.Tasks.Task<System.Net.Sockets.Socket>
Public Function AcceptAsync (acceptSocket As Socket) As Task(Of Socket)
Parameter
- acceptSocket
- Socket
Soket yang digunakan untuk menerima koneksi.
Mengembalikan
Tugas asinkron yang selesai dengan Soket yang diterima.
Pengecualian
Operasi yang tidak valid diminta. Pengecualian ini terjadi jika penerimaan Socket tidak mendengarkan koneksi atau soket yang diterima terikat.
Anda harus memanggil Bind(EndPoint) metode dan Listen(Int32) sebelum memanggil AcceptAsync(SocketAsyncEventArgs) metode .
Pengecualian ini juga terjadi jika soket sudah tersambung atau operasi soket sudah berlangsung menggunakan parameter yang ditentukan e
.
Terjadi kesalahan saat mencoba mengakses soket.
Sudah Socket ditutup.
Berlaku untuk
AcceptAsync(SocketAsyncEventArgs)
- Sumber:
- Socket.cs
- Sumber:
- Socket.cs
- Sumber:
- Socket.cs
Memulai operasi asinkron untuk menerima upaya koneksi masuk.
public:
bool AcceptAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool AcceptAsync (System.Net.Sockets.SocketAsyncEventArgs e);
member this.AcceptAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function AcceptAsync (e As SocketAsyncEventArgs) As Boolean
Parameter
Objek SocketAsyncEventArgs yang digunakan untuk operasi soket asinkron ini.
Mengembalikan
true
jika operasi I/O tertunda. Peristiwa Completed pada e
parameter akan dinaikkan setelah menyelesaikan operasi.
false
jika operasi I/O selesai secara sinkron. Peristiwa Completed pada e
parameter tidak akan dinaikkan dan e
objek yang diteruskan sebagai parameter dapat diperiksa segera setelah panggilan metode kembali untuk mengambil hasil operasi.
Pengecualian
Argumen tidak valid. Pengecualian ini terjadi jika buffer yang disediakan tidak cukup besar. Buffer harus minimal 2 * (sizeof(SOCKADDR_STORAGE + 16) byte.
Pengecualian ini juga terjadi jika beberapa buffer ditentukan, BufferList properti tidak null.
Argumen di luar rentang. Pengecualian terjadi jika Count kurang dari 0.
Operasi yang tidak valid diminta. Pengecualian ini terjadi jika penerimaan Socket tidak mendengarkan koneksi atau soket yang diterima terikat.
Anda harus memanggil Bind(EndPoint) metode dan Listen(Int32) sebelum memanggil AcceptAsync(SocketAsyncEventArgs) metode .
Pengecualian ini juga terjadi jika soket sudah tersambung atau operasi soket sudah berlangsung menggunakan parameter yang ditentukan e
.
Terjadi kesalahan saat mencoba mengakses soket.
Sudah Socket ditutup.
Keterangan
Protokol berorientasi koneksi dapat menggunakan AcceptAsync metode untuk memproses upaya koneksi masuk secara asinkron. Menerima koneksi secara asinkron memberi Anda kemampuan untuk mengirim dan menerima data dalam utas eksekusi terpisah. Sebelum memanggil AcceptAsync metode , Anda harus memanggil Listen metode untuk mendengarkan dan mengantre permintaan koneksi masuk.
Untuk diberi tahu tentang penyelesaian, Anda harus membuat metode panggilan balik yang mengimplementasikan delegasi EventHandler<SocketAsyncEventArgs> dan menghubungkannya ke acara tersebut SocketAsyncEventArgs.Completed .
Properti dan peristiwa berikut pada System.Net.Sockets.SocketAsyncEventArgs objek diperlukan:
Pemanggil dapat secara opsional menentukan yang ada Socket untuk digunakan untuk koneksi masuk dengan menentukan Socket untuk digunakan dengan SocketAsyncEventArgs.AcceptSocket properti .
SocketAsyncEventArgs.AcceptSocket Jika properti null, baru Socket dibangun dengan , , SocketTypedan ProtocolType yang sama AddressFamilysaat ini Socket dan diatur sebagai SocketAsyncEventArgs.AcceptSocket properti .
Pemanggil dapat mengatur SocketAsyncEventArgs.UserToken properti ke objek status pengguna apa pun yang diinginkan sebelum memanggil AcceptAsync metode , sehingga informasi akan dapat diambil dalam metode panggilan balik. Jika panggilan balik membutuhkan lebih banyak informasi daripada satu objek, kelas kecil dapat dibuat untuk menyimpan informasi status lain yang diperlukan sebagai anggota.
Secara opsional, buffer dapat disediakan untuk menerima blok awal data pada soket setelah ConnectAsync metode berhasil. Dalam hal ini, SocketAsyncEventArgs.Buffer properti perlu diatur ke buffer yang berisi data yang akan diterima dan SocketAsyncEventArgs.Count properti perlu diatur ke jumlah maksimum byte data yang akan diterima dalam buffer. Properti ini dapat diatur menggunakan SocketAsyncEventArgs.SetBuffer metode . Bagian dari buffer yang diteruskan akan digunakan secara internal untuk digunakan oleh panggilan Winsock AcceptEx yang mendasar. Ini berarti bahwa jumlah data yang dikembalikan akan selalu kurang dari SocketAsyncEventArgs.Count nilai properti pada System.Net.Sockets.SocketAsyncEventArgs instans yang disediakan. Jumlah buffer yang digunakan secara internal bervariasi berdasarkan keluarga alamat soket. Ukuran buffer minimum yang diperlukan adalah 288 byte. Jika ukuran buffer yang lebih besar ditentukan, maka Socket akan mengharapkan beberapa data tambahan selain data alamat yang diterima oleh panggilan Winsock AcceptEx dan akan menunggu sampai data tambahan ini diterima. Jika waktu habis terjadi, koneksi akan direset. Jadi jika data tambahan diharapkan dari jumlah tertentu, maka ukuran buffer harus diatur ke ukuran buffer minimum ditambah jumlah ini.
Metode panggilan balik penyelesaian harus memeriksa SocketAsyncEventArgs.SocketError properti untuk menentukan apakah AcceptAsync operasi berhasil.
Peristiwa SocketAsyncEventArgs.Completed dapat terjadi dalam beberapa kasus ketika tidak ada koneksi yang diterima dan menyebabkan SocketAsyncEventArgs.SocketError properti diatur ke ConnectionReset. Ini dapat terjadi sebagai akibat dari pemindaian port menggunakan pemindaian jenis SYN setengah terbuka (SYN -> SYN-ACK -> urutan RST). Aplikasi yang AcceptAsync menggunakan metode harus disiapkan untuk menangani kondisi ini.
Lihat juga
Berlaku untuk
AcceptAsync(CancellationToken)
- Sumber:
- Socket.Tasks.cs
- Sumber:
- Socket.Tasks.cs
- Sumber:
- Socket.Tasks.cs
Menerima koneksi masuk.
public:
System::Threading::Tasks::ValueTask<System::Net::Sockets::Socket ^> AcceptAsync(System::Threading::CancellationToken cancellationToken);
public System.Threading.Tasks.ValueTask<System.Net.Sockets.Socket> AcceptAsync (System.Threading.CancellationToken cancellationToken);
member this.AcceptAsync : System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<System.Net.Sockets.Socket>
Public Function AcceptAsync (cancellationToken As CancellationToken) As ValueTask(Of Socket)
Parameter
- cancellationToken
- CancellationToken
Token pembatalan yang dapat digunakan untuk membatalkan operasi asinkron.
Mengembalikan
Tugas asinkron yang selesai dengan Soket yang diterima.
Pengecualian
Operasi yang tidak valid diminta. Pengecualian ini terjadi jika penerimaan Socket tidak mendengarkan koneksi atau soket yang diterima terikat.
Anda harus memanggil Bind(EndPoint) metode dan Listen(Int32) sebelum memanggil AcceptAsync(SocketAsyncEventArgs) metode .
Pengecualian ini juga terjadi jika soket sudah tersambung atau operasi soket sudah berlangsung menggunakan parameter yang ditentukan e
.
Terjadi kesalahan saat mencoba mengakses soket.
Sudah Socket ditutup.
Token pembatalan dibatalkan. Pengecualian ini disimpan ke dalam tugas yang dikembalikan.
Keterangan
Metode ini disimpan dalam tugas yang mengembalikan semua pengecualian non-penggunaan yang dapat dilemparkan oleh rekan sinkron metode. Jika pengecualian disimpan ke dalam tugas yang dikembalikan, pengecualian tersebut akan dilemparkan saat tugas ditunggu. Pengecualian penggunaan, seperti ArgumentException, masih dilemparkan secara sinkron. Untuk pengecualian yang disimpan, lihat pengecualian yang dilemparkan oleh Accept().
Berlaku untuk
AcceptAsync(Socket, CancellationToken)
- Sumber:
- Socket.Tasks.cs
- Sumber:
- Socket.Tasks.cs
- Sumber:
- Socket.Tasks.cs
Menerima koneksi masuk.
public:
System::Threading::Tasks::ValueTask<System::Net::Sockets::Socket ^> AcceptAsync(System::Net::Sockets::Socket ^ acceptSocket, System::Threading::CancellationToken cancellationToken);
public System.Threading.Tasks.ValueTask<System.Net.Sockets.Socket> AcceptAsync (System.Net.Sockets.Socket? acceptSocket, System.Threading.CancellationToken cancellationToken);
member this.AcceptAsync : System.Net.Sockets.Socket * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<System.Net.Sockets.Socket>
Public Function AcceptAsync (acceptSocket As Socket, cancellationToken As CancellationToken) As ValueTask(Of Socket)
Parameter
- acceptSocket
- Socket
Soket yang digunakan untuk menerima koneksi.
- cancellationToken
- CancellationToken
Token pembatalan yang dapat digunakan untuk membatalkan operasi asinkron.
Mengembalikan
Tugas asinkron yang selesai dengan Soket yang diterima.
Pengecualian
Operasi yang tidak valid diminta. Pengecualian ini terjadi jika penerimaan Socket tidak mendengarkan koneksi atau soket yang diterima terikat.
Anda harus memanggil Bind(EndPoint) metode dan Listen(Int32) sebelum memanggil AcceptAsync(SocketAsyncEventArgs) metode .
Pengecualian ini juga terjadi jika soket sudah tersambung atau operasi soket sudah berlangsung menggunakan parameter yang ditentukan e
.
Terjadi kesalahan saat mencoba mengakses soket.
Sudah Socket ditutup.
Token pembatalan dibatalkan. Pengecualian ini disimpan ke dalam tugas yang dikembalikan.