Repositori ini menyediakan abstraksi C# terkelola dari pustaka GameNetworkingSockets yang dibuat dan dikelola oleh Valve Software. Anda perlu membangun perpustakaan asli dengan semua dependensi yang diperlukan sebelum memulai.
Proyek ini diperbarui sesuai dengan rilis perpustakaan asli.
Rakitan terkelola dapat dibuat menggunakan platform kompilasi apa pun yang tersedia yang mendukung C# 3.0 atau lebih tinggi.
Tentukan VALVESOCKETS_SPAN
untuk mengaktifkan dukungan untuk Span. Silakan ikuti langkah-langkah berikut untuk mengaktifkan akses cepat ke blok memori asli dan meningkatkan kinerja.
Sebelum mulai bekerja, perpustakaan harus diinisialisasi menggunakan Valve.Sockets.Library.Initialize();
fungsi.
Setelah pekerjaan selesai, deinisialisasi perpustakaan menggunakan Valve.Sockets.Library.Deinitialize();
fungsi.
Server NetworkingSockets = new NetworkingSockets();uint pollGroup = server.CreatePollGroup();StatusCallback status = (ref Info StatusInfo) => {switch (info.connectionInfo.state) {case ConnectionState.None:break;case ConnectionState.Connecting:server .AcceptConnection(info.koneksi);server.SetConnectionPollGroup(pollGroup, info.koneksi);break;case ConnectionState.Connected:Console.WriteLine("Klien terhubung - ID: " + info.koneksi + ", IP: " + info.connectionInfo.address.GetIP());break;case ConnectionState. ClosedByPeer:case ConnectionState.ProblemDetectedLocally:server.CloseConnection(info.connection);Console.WriteLine("Klien terputus - ID: " + info.koneksi + ", IP: " + info.connectionInfo.address.GetIP());break;}};utils.SetStatusCallback(status);Alamat alamat = Alamat baru();alamat.SetAddress("::0" , port);uint listeningSocket = server.CreateListenSocket(alamat ref);#if VALVESOCKETS_SPANMessageCallback message = (di NetworkingMessage netMessage) => {Console.WriteLine("Pesan diterima dari - ID: " + netMessage.connection + ", ID Saluran: " + netMessage.channel + ", Panjang data: " + netMessage.length);};#else const int maxMessages = 20;NetworkingMessage[] netMessages = baru NetworkingMessage[maxMessages];#endif While (!Console.KeyAvailable) {server.RunCallbacks(); #if VALVESOCKETS_SPANserver.ReceiveMessagesOnPollGroup(pollGroup, pesan, 20); #else int netMessagesCount = server.ReceiveMessagesOnPollGroup(pollGroup, netMessages, maxMessages);if (netMessagesCount > 0) {for (int i = 0; i < netMessagesCount; i++) {ref NetworkingMessage netMessage = ref netMessages[i];Console.WriteLine("Pesan diterima dari - ID: " + netMessage.connection + ", ID Saluran: " + netMessage.channel + ", Panjang data: " + netMessage.length);netMessage.Destroy() ;}} #endif Thread.Sleep(15);}server.DestroyPollGroup(pollGroup);
Klien NetworkingSockets = new NetworkingSockets();uint connection = 0;StatusCallback status = (ref Info StatusInfo) => {switch (info.connectionInfo.state) {case ConnectionState.None:break;case ConnectionState.Connected:Console.WriteLine(" Klien terhubung ke server - ID: " + koneksi);break;case ConnectionState.ClosedByPeer:case ConnectionState.ProblemDetectedLocally:client.CloseConnection(koneksi);Console.WriteLine("Klien terputus dari server");break;}};utils.SetStatusCallback(status);Alamat alamat = Alamat baru();address.SetAddress(":: 1", port);koneksi = client.Connect(alamat ref);#if VALVESOCKETS_SPANMessageCallback message = (dalam NetworkingMessage netMessage) => {Console.WriteLine("Pesan diterima dari server - ID Saluran: " + netMessage.channel + ", Panjang data: " + netMessage.length);};#else const int maxMessages = 20;NetworkingMessage[] netMessages = NetworkingMessage baru[maxMessages];#endif while (!Console.KeyAvailable) {client.RunCallbacks(); #if VALVESOCKETS_SPANclient.ReceiveMessagesOnConnection(koneksi, pesan, 20); #else int netMessagesCount = client.ReceiveMessagesOnConnection(koneksi, netMessages, maxMessages);if (netMessagesCount > 0) {for (int i = 0; i < netMessagesCount; i++) {ref NetworkingMessage netMessage = ref netMessages[i];Console.WriteLine ("Pesan diterima dari server - ID Saluran: " + netMessage.channel + ", Panjang data: " + netMessage.length);netMessage.Destroy();}} #endif Thread.Tidur(15);}
byte[] data = byte baru[64];sockets.SendMessageToConnection(koneksi, data);
byte[] buffer = byte baru[1024];netMessage.CopyTo(buffer);
DebugCallback debug = (ketik, pesan) => {Console.WriteLine("Debug - Ketik: " + ketik + ", Pesan: " + pesan);};NetworkingUtils utils = new NetworkingUtils();utils.SetDebugCallback(DebugType.Everything , men-debug);
Penggunaannya hampir sama dengan di lingkungan .NET, hanya saja fungsi konsol harus diganti dengan fungsi yang disediakan oleh Unity. Jika NetworkingSockets.RunCallbacks()
akan dipanggil dalam game loop, biarkan Unity tetap berjalan di latar belakang dengan mengaktifkan opsi yang sesuai di pengaturan pemutar.
Definisi tanda untuk fungsi NetworkingSockets.SendMessageToConnection()
:
SendFlags.Unreliable
dapat diandalkan tidak dapat diandalkan, pengiriman pesan tidak dijamin, pesan mungkin dikirimkan rusak.
SendFlags.Reliable
dapat diandalkan dipesan, pesan harus diterima oleh koneksi target dan upaya pengiriman ulang harus dilakukan hingga pesan terkirim.
SendFlags.NoNagle
sebuah pesan tidak akan dikelompokkan dengan pesan lain dalam satu timer.
SendFlags.NoDelay
pesan tidak akan di-buffer jika tidak dapat dikirim dengan relatif cepat.
Definisi tipe identitas untuk struktur NetworkingIdentity
:
IdentityType.Invalid
tidak diketahui atau tidak valid.
IdentityType.SteamID
Pengidentifikasi uap.
IdentityType.IPAddress
Alamat IPv4/IPv6.
Definisi status koneksi untuk bidang ConnectionInfo.state
:
ConnectionState.None
status dummy, koneksi tidak ada atau sudah ditutup.
ConnectionState.Connecting
sedang berlangsung dalam pembuatan koneksi yang dimulai oleh fungsi NetworkingSockets.Connect()
.
ConnectionState.FindingRoute
jika server menerima koneksi, maka koneksi ini beralih ke status pertemuan, tetapi rute ujung ke ujung masih belum dibuat (melalui jaringan relai).
ConnectionState.Connected
permintaan koneksi yang dimulai oleh fungsi NetworkingSockets.Connect()
telah selesai.
ConnectionState.ClosedByPeer
koneksi telah ditutup oleh rekannya, tetapi tidak ditutup secara lokal. Jika ada pesan apa pun dalam antrian masuk, pesan tersebut dapat diambil. Jika tidak, tidak ada yang dapat dilakukan dengan koneksi kecuali menutupnya menggunakan fungsi NetworkingSockets.CloseConnection()
. Koneksi masih ada dari perspektif API dan harus ditutup untuk mengosongkan sumber daya.
ConnectionState.ProblemDetectedLocally
gangguan pada koneksi telah terdeteksi secara lokal. Upaya untuk mengirim pesan lebih lanjut akan gagal. Pesan yang tersisa yang diterima dalam antrean akan tersedia. Koneksi masih ada dari perspektif API dan harus ditutup untuk mengosongkan sumber daya.
Definisi cakupan konfigurasi:
ConfigurationScope.Global
ConfigurationScope.SocketsInterface
ConfigurationScope.ListenSocket
ConfigurationScope.Connection
Definisi tipe data konfigurasi:
ConfigurationDataType.Int32
ConfigurationDataType.Int64
ConfigurationDataType.Float
ConfigurationDataType.String
ConfigurationDataType.FunctionPtr
Definisi nilai konfigurasi:
ConfigurationValue.Invalid
ConfigurationValue.FakePacketLossSend
ConfigurationValue.FakePacketLossRecv
ConfigurationValue.FakePacketLagSend
ConfigurationValue.FakePacketLagRecv
ConfigurationValue.FakePacketReorderSend
ConfigurationValue.FakePacketReorderRecv
ConfigurationValue.FakePacketReorderTime
ConfigurationValue.FakePacketDupSend
ConfigurationValue.FakePacketDupRecv
ConfigurationValue.FakePacketDupTimeMax
ConfigurationValue.TimeoutInitial
ConfigurationValue.TimeoutConnected
ConfigurationValue.SendBufferSize
ConfigurationValue.SendRateMin
ConfigurationValue.SendRateMax
ConfigurationValue.NagleTime
ConfigurationValue.IPAllowWithoutAuth
ConfigurationValue.MTUPacketSize
ConfigurationValue.MTUDataSize
ConfigurationValue.Unencrypted
ConfigurationValue.EnumerateDevVars
ConfigurationValue.SymmetricConnect
ConfigurationValue.LocalVirtualPort
ConfigurationValue.ConnectionStatusChanged
ConfigurationValue.AuthStatusChanged
ConfigurationValue.RelayNetworkStatusChanged
ConfigurationValue.MessagesSessionRequest
ConfigurationValue.MessagesSessionFailed
ConfigurationValue.P2PSTUNServerList
ConfigurationValue.P2PTransportICEEnable
ConfigurationValue.P2PTransportICEPenalty
ConfigurationValue.P2PTransportSDRPenalty
ConfigurationValue.SDRClientConsecutitivePingTimeoutsFailInitial
ConfigurationValue.SDRClientConsecutitivePingTimeoutsFail
ConfigurationValue.SDRClientMinPingsBeforePingAccurate
ConfigurationValue.SDRClientSingleSocket
ConfigurationValue.SDRClientForceRelayCluster
ConfigurationValue.SDRClientDebugTicketAddress
ConfigurationValue.SDRClientForceProxyAddr
ConfigurationValue.SDRClientFakeClusterPing
ConfigurationValue.LogLevelAckRTT
ConfigurationValue.LogLevelPacketDecode
ConfigurationValue.LogLevelMessage
ConfigurationValue.LogLevelPacketGaps
ConfigurationValue.LogLevelP2PRendezvous
ConfigurationValue.LogLevelSDRRelayPings
Definisi hasil nilai konfigurasi:
ConfigurationValueResult.BadValue
ConfigurationValueResult.BadScopeObject
ConfigurationValueResult.BufferTooSmall
ConfigurationValueResult.OK
ConfigurationValueResult.OKInherited
Definisi tipe debug:
DebugType.None
DebugType.Bug
DebugType.Error
DebugType.Important
DebugType.Warning
DebugType.Message
DebugType.Verbose
DebugType.Debug
DebugType.Everything
Definisi hasil operasi:
Result.OK
sukses.
Result.Fail
kegagalan umum.
Result.NoConnection
koneksi jaringan gagal.
Result.InvalidParam
parameter salah.
Result.InvalidState
objek yang dipanggil berada dalam keadaan tidak valid.
Result.Ignored
Target yang diabaikan mengabaikan pengirim.
Menyediakan acara per soket.
StatusCallback(ref StatusInfo info)
memberi tahu ketika mekanisme pengiriman pada soket pendengaran mengembalikan status koneksi. Referensi kepada delegasi harus dilestarikan dari pengumpulan sampah.
Menyediakan per acara aplikasi.
DebugCallback(DebugType type, string message)
memberi tahu ketika informasi debug dengan verbositas yang diinginkan muncul. Referensi kepada delegasi harus dilestarikan dari pengumpulan sampah.
Berisi data marshall dengan alamat IP dan nomor port.
Address.ip
Alamat IP dalam byte.
Address.port
port port.
Address.IsLocalHost
memeriksa apakah identitasnya adalah localhost.
Address.GetIP()
mendapatkan alamat IP dalam bentuk yang dapat dicetak.
Address.SetLocalHost(ushort port)
menyetel localhost dengan port yang ditentukan.
Address.SetAddress(string ip, ushort port)
menetapkan alamat IP (IPv4/IPv6) dengan port tertentu.
Address.Equals(Address other)
menentukan kesetaraan alamat.
Berisi data marshall dengan konfigurasi.
Configuration.value
adalah jenis nilai yang dijelaskan dalam enumerasi ConfigurationValue
.
Configuration.dataType
tipe data yang dijelaskan dalam enumerasi ConfigurationDataType
.
Configuration.data
gabungan data konfigurasi.
Berisi data yang disusun dengan status koneksi.
ID koneksi StatusInfo.connection
.
StatusInfo.connectionInfo
pada dasarnya struktur ConnectionInfo
dengan data yang disusun.
Berisi data marshall dengan info koneksi.
ConnectionInfo.identity
pengidentifikasi titik akhir.
ConnectionInfo.userData
data yang disediakan pengguna yang disetel menggunakan fungsi NetworkingSockets.SetConnectionUserData()
.
ConnectionInfo.listenSocket
mendengarkan soket untuk koneksi ini.
ConnectionInfo.address
alamat jarak jauh titik akhir.
ConnectionInfo.state
status koneksi tingkat tinggi yang dijelaskan dalam enumerasi ConnectionState
.
ConnectionInfo.endReason
penyebab dasar pemutusan atau masalah koneksi.
Penjelasan ConnectionInfo.endDebug
dalam bentuk yang dapat dibaca manusia untuk penghentian atau masalah koneksi. Ini dimaksudkan untuk tujuan diagnostik debug saja, bukan untuk ditampilkan kepada pengguna. Ini mungkin memiliki beberapa detail khusus untuk masalah tersebut.
Deskripsi debug ConnectionInfo.connectionDescription
mencakup pegangan koneksi, jenis koneksi, dan informasi rekan.
Berisi data yang disusun dengan status koneksi untuk permintaan yang sering.
ConnectionStatus.state
status koneksi tingkat tinggi yang dijelaskan dalam enumerasi ConnectionState
.
ConnectionStatus.ping
ping saat ini dalam milidetik.
ConnectionStatus.connectionQualityLocal
koneksi lokal diukur secara lokal (persentase paket dikirimkan end-to-end secara berurutan).
ConnectionStatus.connectionQualityRemote
keberhasilan pengiriman paket jarak jauh seperti yang diamati dari host jarak jauh.
ConnectionStatus.outPacketsPerSecond
tarif paket keluar saat ini dari riwayat terkini.
ConnectionStatus.outBytesPerSecond
kecepatan data keluar saat ini dari riwayat terkini.
ConnectionStatus.inPacketsPerSecond
tarif paket masuk saat ini dari riwayat terkini.
ConnectionStatus.inBytesPerSecond
kecepatan data masuk saat ini dari riwayat terkini.
ConnectionStatus.sendRateBytesPerSecond
memperkirakan kecepatan pengiriman data ke rekan. Nilainya bisa jauh lebih tinggi daripada ConnectionStatus.outBytesPerSecond
, yang berarti kapasitas saluran lebih tinggi daripada data yang dikirim.
ConnectionStatus.pendingUnreliable
byte yang tertunda untuk dikirim tidak dapat diandalkan. Ini adalah data yang baru-baru ini diminta untuk dikirim tetapi belum benar-benar dikirimkan.
ConnectionStatus.pendingReliable
jumlah byte yang menunggu untuk dikirim dengan andal. Nomor yang dapat diandalkan juga mencakup data yang sebelumnya dikirimkan tetapi sekarang telah dijadwalkan untuk dikirim ulang. Dengan demikian, dimungkinkan untuk mengamati peningkatan byte antara dua pemeriksaan, bahkan jika tidak ada panggilan yang dilakukan untuk mengirim data yang dapat diandalkan di antara pemeriksaan tersebut. Data yang menunggu penundaan Nagle akan muncul di angka-angka ini.
ConnectionStatus.sentUnackedReliable
jumlah byte data andal yang telah dipasang, namun belum menerima pengakuan, sehingga mungkin harus dikirim ulang.
Berisi data identitas jaringan yang disusun.
NetworkingIdentity.type
deskripsi identitas jaringan.
NetworkingIdentity.IsInvalid
memeriksa apakah identitas memiliki tipe yang tidak valid.
NetworkingIdentity.GetSteamID()
mendapat ID Steam.
NetworkingIdentity.SetSteamID(ulong steamID)
menyetel ID Steam.
Berisi data marshall dari pesan jaringan.
NetworkingMessage.identity
pengidentifikasi pengirim.
Data koneksi yang disediakan pengguna NetworkingMessage.connectionUserData
yang disetel menggunakan fungsi NetworkingSockets.SetConnectionUserData()
.
NetworkingMessage.timeReceived
stempel waktu lokal saat pesan diterima.
Nomor pesan NetworkingMessage.messageNumber
yang ditetapkan oleh pengirim.
NetworkingMessage.data
muatan pesan.
NetworkingMessage.length
payload.
NetworkingMessage.connection
ID koneksi asal pesan tersebut.
NetworkingMessage.channel
nomor saluran tempat pesan diterima.
Bendera NetworkingMessage.flags
yang digunakan untuk mengirim pesan.
NetworkingMessage.CopyTo(byte[] destination)
menyalin payload dari pesan ke array tujuan.
NetworkingMessage.Destroy()
menghancurkan pesan. Harus dipanggil hanya ketika pesan diperoleh dari soket.
Berisi penunjuk terkelola ke soket.
NetworkingSockets.CreateListenSocket(ref Address address, Configuration[] configurations)
membuat soket dengan konfigurasi opsional dan mengembalikan ID soket yang mendengarkan koneksi masuk yang dimulai oleh fungsi NetworkingSockets.Connect()
.
NetworkingSockets.Connect(ref Address address, Configuration[] configurations)
memulai koneksi ke host asing dengan konfigurasi opsional. Mengembalikan ID koneksi lokal.
NetworkingSockets.AcceptConnection(Connection connection)
menerima koneksi masuk yang diterima pada soket pendengaran. Ketika upaya koneksi diterima (mungkin setelah beberapa paket jabat tangan dasar dipertukarkan untuk mencegah spoofing sepele), objek antarmuka koneksi dibuat dalam status ConnectionState.Connecting
dan StatusCallback()
dipanggil. Mengembalikan hasil yang dijelaskan dalam enumerasi Result
.
NetworkingSockets.CloseConnection(Connection connection, int reason, string debug, bool enableLinger)
terputus dari host dan membatalkan pegangan koneksi. Data apa pun yang belum dibaca pada koneksi akan dibuang. Parameter alasan adalah kode opsional yang disediakan pengguna yang akan diterima di sisi lain dan dicatat (jika memungkinkan) dalam analisis backend. Pencatatan log debug mungkin menunjukkan kesalahan jika kode alasan di luar rentang yang dapat diterima. Parameter debug adalah string diagnostik opsional yang dapat dibaca manusia yang akan diterima di ujung lain dan dicatat (bila memungkinkan) dalam analisis backend. Jika pengguna ingin menempatkan soket ke status berlama-lama, di mana upaya dilakukan untuk menghapus sisa data terkirim, parameter berlama-lama harus diaktifkan, jika tidak, data yang dapat diandalkan tidak akan dihapus. Jika koneksi telah berakhir, kode alasan, string debug, dan parameter lama akan diabaikan. Mengembalikan nilai benar jika berhasil atau salah jika gagal.
NetworkingSockets.CloseListenSocket(ListenSocket socket, string remoteReason)
menghancurkan soket pendengaran, dan semua soket klien yang dihasilkan dengan menerima koneksi pada soket pendengaran. Alasan jarak jauh menentukan tindakan pembersihan apa yang dilakukan pada soket klien yang dimusnahkan. Jika pembersihan diminta dan pengguna telah meminta soket pendengaran yang terikat pada port lokal tertentu untuk memfasilitasi koneksi IPv4 langsung, maka soket UDP yang mendasarinya harus tetap terbuka hingga semua klien telah dibersihkan. Mengembalikan nilai benar jika berhasil atau salah jika gagal.
NetworkingSockets.SetConnectionUserData(Connection peer, long userData)
menyetel data yang disediakan pengguna untuk koneksi. Mengembalikan nilai benar jika berhasil atau salah jika gagal.
NetworkingSockets.GetConnectionUserData(Connection peer)
mengembalikan data yang disediakan pengguna atau -1 jika pegangan tidak valid atau jika ada data yang belum disetel untuk koneksi.
NetworkingSockets.SetConnectionName(Connection peer, string name)
menetapkan nama untuk koneksi, yang sebagian besar digunakan untuk debugging.
NetworkingSockets.GetConnectionName(Connection peer, StringBuilder name, int maxLength)
mengambil nama koneksi ke string yang dapat diubah. Mengembalikan nilai benar jika berhasil atau salah jika gagal.
NetworkingSockets.SendMessageToConnection(Connection connection, byte[] data, int length, SendFlags flags)
mengirimkan pesan ke host pada soket yang terhubung. Parameter panjang dan jenis pengiriman bersifat opsional. Beberapa bendera dapat ditentukan sekaligus. Mengembalikan hasil yang dijelaskan dalam enumerasi Result
. Pointer IntPtr
ke buffer asli dapat digunakan sebagai pengganti referensi ke array byte.
NetworkingSockets.FlushMessagesOnConnection(Connection connection)
jika Nagle diaktifkan (diaktifkan secara default) maka pesan akan dimasukkan ke dalam antrian waktu Nagle sebelum dikirim, untuk menggabungkan pesan-pesan kecil ke dalam paket yang sama. Panggil fungsi ini untuk menghapus pesan yang antri dan mengirimkannya segera pada waktu transmisi berikutnya. Mengembalikan hasil yang dijelaskan dalam enumerasi Result
.
NetworkingSockets.ReceiveMessagesOnConnection(Connection connection, NetworkingMessage[] messages, int maxMessages)
mengambil pesan berikutnya yang tersedia dari soket untuk koneksi. Mengembalikan sejumlah pesan atau -1 jika pegangan koneksi tidak valid. Urutan pesan yang dikembalikan dalam array relevan. Pesan yang dapat dipercaya akan diterima sesuai urutan pengirimannya. Jika ada pesan yang diperoleh, message.Destroy()
harus dipanggil untuk masing-masing pesan guna mengosongkan sumber daya.
NetworkingSockets.GetConnectionInfo(Connection connection, ref ConnectionInfo info)
mendapat informasi tentang koneksi yang ditentukan. Mengembalikan nilai benar jika berhasil atau salah jika gagal.
NetworkingSockets.GetQuickConnectionStatus(Connection connection, ref ConnectionStatus status)
mendapatkan serangkaian status koneksi singkat yang dapat ditampilkan kepada pengguna dalam game. Mengembalikan nilai benar jika berhasil atau salah jika gagal.
NetworkingSockets.GetDetailedConnectionStatus(Connection connection, StringBuilder status, int statusLength)
mendapatkan statistik koneksi terperinci dalam bentuk yang dapat dicetak. Mengembalikan 0 jika berhasil, -1 jika gagal, atau > 0 jika kapasitas string yang dapat diubah tidak cukup.
NetworkingSockets.GetListenSocketAddress(ListenSocket socket, ref Address address)
mendapatkan IP lokal dan nomor port dari soket pendengaran. Mengembalikan nilai benar jika berhasil atau salah jika gagal.
NetworkingSockets.CreateSocketPair(Connection connectionLeft, Connection connectionRight, bool useNetworkLoopback, ref NetworkingIdentity identityLeft, ref NetworkingIdentity identityRight)
membuat sepasang koneksi yang berkomunikasi satu sama lain, misalnya komunikasi loopback. Kedua koneksi akan segera ditempatkan ke status terhubung, dan tidak ada callback yang akan dipanggil. Setelah ini, jika salah satu koneksi ditutup, koneksi lainnya akan menerima panggilan balik, persis seperti jika mereka berkomunikasi melalui jaringan. Secara default, buffer internal digunakan, melewati jaringan sepenuhnya, memotong pesan menjadi paket, enkripsi, menyalin payload, dll. Ini berarti bahwa paket loopback, secara default, tidak akan mensimulasikan kelambatan atau kehilangan. Parameter loopback jaringan yang diaktifkan akan menyebabkan pasangan soket mengirim paket melalui perangkat loopback jaringan lokal pada port sementara. Kelambatan dan kehilangan palsu didukung dalam kasus ini, dan waktu CPU dihabiskan untuk mengenkripsi dan mendekripsi.
NetworkingSockets.GetIdentity()
mendapatkan identitas yang terkait dengan soket.
NetworkingSockets.CreatePollGroup()
membuat grup jajak pendapat baru untuk koneksi. Mengembalikan pegangan grup jajak pendapat.
NetworkingSockets.DestroyPollGroup(PollGroup pollGroup)
menghancurkan grup jajak pendapat. Jika ada koneksi dalam grup jajak pendapat, mereka akan dikeluarkan dari grup dan dibiarkan dalam keadaan di mana mereka bukan bagian dari grup jajak pendapat mana pun. Mengembalikan nilai salah jika melewati pegangan grup jajak pendapat yang tidak valid.
NetworkingSockets.SetConnectionPollGroup(PollGroup pollGroup, Connection connection)
menetapkan koneksi ke grup polling. Koneksi mungkin hanya dimiliki oleh satu grup jajak pendapat. Menambahkan koneksi ke grup jajak pendapat secara implisit menghapusnya dari grup jajak pendapat lainnya. Anda dapat meneruskan nilai nol ke parameter grup jajak pendapat untuk menghapus koneksi dari grup jajak pendapat saat ini. Jika terdapat pesan-pesan yang diterima yang saat ini tertunda pada sambungan, upaya dilakukan untuk menambahkannya ke antrean pesan untuk grup jajak pendapat kira-kira dalam urutan yang akan diterapkan jika sambungan sudah menjadi bagian dari grup jajak pendapat pada saat itu. pesan diterima. Mengembalikan nilai salah jika pegangan koneksi tidak valid atau jika pegangan grup jajak pendapat tidak valid.
NetworkingSockets.ReceiveMessagesOnPollGroup()
mengambil pesan berikutnya yang tersedia dari soket pada koneksi mana pun dalam grup jajak pendapat. Periksa NetworkingMessage.connection
untuk mengidentifikasi koneksi. Urutan pengiriman pesan di antara koneksi yang berbeda biasanya akan sesuai dengan urutan penerimaan paket terakhir yang menyelesaikan pesan. Tapi ini bukan jaminan yang kuat, terutama untuk paket yang diterima tepat saat koneksi ditugaskan ke grup polling. Urutan pengiriman pesan pada koneksi yang sama ditentukan dengan baik dan jaminan yang sama juga ada. Pesan tidak dikelompokkan berdasarkan koneksi, jadi pesan tersebut belum tentu muncul secara berurutan dalam daftar, pesan tersebut mungkin disisipkan dengan pesan untuk koneksi lain. Mengembalikan sejumlah pesan atau -1 jika pengendali grup jajak pendapat tidak valid.
NetworkingSockets.RunCallbacks()
mengirimkan callback jika tersedia.
NetworkingUtils.Dispose()
menghancurkan utilitas jaringan dan membersihkan sumber daya yang tidak dikelola.
NetworkingUtils.Time
mengembalikan waktu monoton lokal saat ini dalam mikrodetik. Itu tidak pernah diatur ulang saat aplikasi masih hidup.
NetworkingUtils.FirstConfigurationValue
mendapatkan nilai konfigurasi bernomor terendah yang tersedia di lingkungan saat ini.
NetworkingUtils.SetStatusCallback(StatusCallback callback)
menyetel panggilan balik untuk pembaruan status koneksi. Mengembalikan nilai benar jika berhasil atau salah jika gagal.
NetworkingUtils.SetDebugCallback(DebugType detailLevel, DebugCallback callback)
menyetel panggilan balik untuk keluaran debug.
NetworkingUtils.SetConfigurationValue(ConfigurationValue configurationValue, ConfigurationScope configurationScope, IntPtr scopeObject, ConfigurationDataType dataType, IntPtr value)
menetapkan nilai konfigurasi sesuai dengan enumerasi ConfigurationValue
, ConfigurationScope
, dan ConfigurationDataType
. Parameter value harus menjadi referensi ke nilai sebenarnya.
NetworkingUtils.SetConfigurationValue(Configuration configuration, ConfigurationScope configurationScope, IntPtr scopeObject)
menyetel konfigurasi menggunakan struktur Configuration
sesuai dengan enumerasi ConfigurationScope
.
NetworkingUtils.GetConfigurationValue(ConfigurationValue configurationValue, ConfigurationScope configurationScope, IntPtr scopeObject, ref ConfigurationDataType dataType, ref IntPtr result, ref IntPtr resultLength)
mendapatkan nilai konfigurasi sesuai dengan enumerasi ConfigurationValue
, ConfigurationScope
, dan ConfigurationDataType
.
Berisi bidang konstan.
Library.maxCloseMessageLength
panjang maksimum string alasan dalam byte ketika koneksi ditutup.
Library.maxMessageSize
ukuran maksimum satu pesan yang dapat dikirim.
Library.Initialize(ref NetworkingIdentity identity, StringBuilder errorMessage)
menginisialisasi perpustakaan asli dengan identitas opsional yang akan dikaitkan dengan soket. Parameter pesan kesalahan bersifat opsional dan harus digunakan untuk menentukan kesalahan selama inisialisasi. Kapasitas string yang dapat diubah untuk pesan kesalahan harus sama dengan Library.maxErrorMessageLength
.
Library.Deinitialize()
mendeinisialisasi perpustakaan asli. Harus dipanggil setelah pekerjaan selesai.