Selamat datang di Client Dasar / Server Aplikasi Chat di C #. Dalam tutorial ini saya
akan memberikan dasar-dasar untuk aplikasi chatting sederhana dalam C # memanfaatkan
TCPClient, StreamReader, dan Kelas StreamWriter di Net Framework..
Pada aplikasi ini Anda memiliki 3 komponen, server (file class), komponen komunikasi (file
class) dan aplikasi klien.Kita akan melihat semua 3 komponen ini secara individual, dan
bagaimana dapat menggabungkan untuk membuat aplikasi dasar obrolan Anda. Komponen
pertama, server obrolan, adalah di mana pesan-pesan dikirim bolak-balik antara klien dan
server. Sebelum menulis apa pun metode yang Anda perlu menambahkan referensi berikut
ke kelas Anda.
Saya tahu beberapa dari Anda akan melihat referensi 5 dan bertanya tentang Chat =
System.Net. Ketika referensi menambahkan dalam C # Anda diijinkan untuk menambahkan
alias untuk referensi Anda, sehingga memungkinkan Anda untuk memiliki kegunaan ganda
dari Namespace yang sama pada waktu yang sama, bertindak sebagai 2 obyek yang
berbeda.
Catatan: Untuk menggunakan Alias untuk referensi Namespace itu harus bersama dengan
Pernyataan Menggunakan.
Hal pertama yang kami lakukan di kelas Server kami adalah membuat 3 variabel global, 2
adalah variabel Hashtable, dan yang ketiga adalah variabel TCPListener, yang digunakan
untuk mendengarkan koneksi dari Klien TCP.
Ketiga variabel ini akan digunakan seluruh file kelas kami ChatServer.cs. Selanjutnya,
adalah ChatServer Umum () metode, ini adalah di mana kita mulai obrolan server dan
terhubung. Kami kemudian akan menggunakan objek TCPListener kami untuk memeriksa
apakah ada permintaan koneksi tertunda. Jika ada permintaan menunggu kita kemudian
membuat koneksi baru, biarkan pengguna tahu mereka terhubung, kemudian membuat kami
Obyek DoCommunication.
Kita akan sampai ke objek DoCommunication nanti dalam tutorial ini. Berikut ini adalah kode
untuk metode ini
Selanjutnya, karena ini adalah aplikasi dasar pada chatting, kita perlu sebuah metode untuk
mengirimkan pesan kita kepada semua yang terhubung. Di sini kita membuat objek
StreamWriter, digunakan untuk menulis pesan kami ke jendela chatting, Array TcpClient,
untuk menahan semua TcpClients bagi semua pengguna terkoneksi, maka kita salin julukan
user ke server jendela obrolan. Setelah itu kita membuat loop, mengulang melalui semua
TcpClients, kita memeriksa apakah pesan yang dikirim eing kosong atau indeks dari array
TcpClient kita kosong. Dari sana kita mengirim pesan kami ke jendela obrolan, dan flush
untuk memastikan buffer kosong.
Dalam Catch Anda, blok Coba ... Catch kita, adalah tempat kita menangani Exception yang
disebabkan ketika pengguna meninggalkan atau terputus. Kami menampilkan pesan
membiarkan pengguna mengetahui bahwa orang yang telah terputus, kita menghapus
julukan itu dari daftar, kemudian membuang yang misalnya TcpClient pengguna.Berikut ini
adalah kode untuk metode ini
Metode berikutnya kami memperkenalkan adalah cara untuk mengirim pesan sistem,
metode ini hampir identik dengan metode SendMsgToAll, kecuali di sini kami tidak
membuang TcpClient contoh, karena pesan sedang dikirim oleh sistem, bukan pengguna.
Percaya atau tidak, thats keseluruhan dari Kelas ChatServer, isnt sederhana itu.Bekerja
dengan objek TCP bisa menyenangkan, karena Anda dapat melakukan begitu banyak
dengan mereka. Dalam aplikasi sederhana Anda bisa menambahkan fungsi untuk mengirim
file bolak-balik antara pengguna, dan banyak lagi. Itu mungkin akhir Kelas ChatServer, tetapi
tidak pada akhir menciptakan aplikasi kita.
Komponen berikutnya untuk melihat adalah Kelas DoCommunicate. Ini adalah komponen
yang melakukan pekerjaan untuk server kami. Untuk aplikasi chat untuk bekerja efisien, dan
bekerja sebagai orang mengharapkan aplikasi chat untuk bekerja, perlu sebuah aplikasi
multi-threaded. Arti tiap user sedang berjalan di thread mereka sendiri, yang memungkinkan
untuk pesan yang akan dikirim dan diterima secara real time. Multi threading memberikan
ilusi bahwa beberapa kegiatan yang terjadi pada saat yang sama.
Tujuan utama dari multi threading adalah untuk meningkatkan kinerja. Dengan setiap
pengguna dalam obrolan operasi aplikasi pada thread sendiri, pengguna tidak perlu
menunggu untuk satu user akan selesai untuk mengirim pesan mereka, mereka dapat
mengirimkan mereka secara bersamaan. C # memiliki beberapa item yang kuat dalam
Namespace System.Threading, yang digunakan untuk, Anda bisa menebaknya,
menjalankan beberapa thread dan sinkronisasi mereka.
Untuk file kelas kami DoCommunicate.cs kita membutuhkan rujukan berikut
Sekali lagi kita tambahkan sebuah alias untuk sebuah instance dari referensi Namespace
System.Net, ini mencegah tabrakan namespace di kelas kami. Seperti kelas ChatServer, hal
pertama yang kita lakukan di kelas kami adalah membuat beberapa variabel global, 4 dari
mereka:
Sebuah objek TCPClient
Sebuah objek StreamReader
Sebuah objek StreamWriter
Dan objek string
Dalam metode ini adalah di mana Thread baru dibuat dan mulai, yang memungkinkan
pengguna ini bereaksi secara real time dalam aplikasi.
Perhatikan ketika kita membuat Thread baru kita lulus metode yang disebut startChat.Kita
akan sampai ke metode ini sejenak, tapi pertama-tama kita perlu melakukan beberapa hal
yang startChat mengandalkan. Setelah thread dibuat dan
mulai, kita perlu mendapatkan julukan pengguna ingin digunakan. Untuk ini kita
menggunakan metode GetNick kita buat. Di sini kami hanya meminta pengguna apa nama
panggilan mereka, kemudian kembali nilai yang dengan metode startChat.
Sekarang mari kita melihat metode startChat tersebut. Di sini kita membuat kita
StreamReader dan obyek StreamWriter dan mengatur variabel julukan string global untuk
nilai kembali dari metode GetNick. Selanjutnya yang kita lakukan adalah memeriksa untuk
memastikan bahwa julukan yang diberikan oleh pengguna sudah tidak ada, jika tidak kita
mendorong mereka untuk nickname sampai kita menemukan satu thats belum digunakan.
Setelah mereka memberikan julukan yang valid kita menambahkan nama panggilan mereka
ke server, mencegah pengguna lain dari menggunakannya, maka kita mengirim pesan
sistem membiarkan user lain tahu ada user baru. Dari sana kami membuat Thread baru,
yang memanggil metode runChat. Mari kita pertama melihat metode startChat
Metode terakhir di kita DoCommunicate.cs Class adalah metode runChat disebut oleh
thread baru di startChat. Ini hanyalah untuk membaca aliran saat ini dan mengirimkan pesan
kami ke jendela obrolan.
Itu adalah akhir kelas DoCommunicate kami. Sejauh ini Anda telah melihat cara membuat
server obrolan, kelas untuk menangani pekerjaan aplikasi chat. Anda telah belajar tentang
TcpClients, TcpListeners, StreamReaders,, StreamWriters dan Thread.Kami mendiskusikan
tujuan dari aplikasi multi threaded, dan bagaimana membuat satu, dan Anda telah belajar
tentang menambahkan alias untuk referensi Anda untuk mencegah tabrakan namespace
dalam aplikasi Anda.
Sekarang kami telah kami server obrolan-benar pasti, kita membutuhkan sebuah aplikasi
client untuk chatting dengan. Pada aplikasi ini saya memiliki bentuk tunggal, ChatClient, tapi
aku melakukan ini sedikit berbeda. Saya tidak menambahkan kontrol melalui drag and drop,
saya menambahkan mereka pada saat runtime, secara pribadi saya tidak
merekomendasikan ini untuk programmer baru.
Hal pertama yang saya aplikasi klien kami adalah Windows API panggilan, referensi yang
kita butuhkan adalah fungsi ExitProcess. Yang terlihat seperti ini
Dalam void utama adalah di mana saya membuat bentuk baru, menambahkan kontrol saya,
mengatur properti dari jendela, WindowState, Teks, dan TcpClient saya dan memanggil
metode Connect Kelas System.Net.Sockets.TcpClient.
Dengan Connect metode yang Anda berikan alamat IP atau nama host, bersama dengan
nomor port untuk terhubung ke, maka menghubungkan Anda ke informasi tersebut. Karena
ini adalah aplikasi dasar, informasi yang sulit dikodekan ke dalam aplikasi, dengan aplikasi
nyata Anda akan memiliki luas untuk memberikan pengguna pilihan untuk menentukan
server obrolan mereka ingin terhubung ke. Selain metode Utama kami memiliki tiga metode:
ChatClient_Closing: ini menangani apa yang perlu dilakukan sekali pengguna menutup
aplikasi. Ini semua terjadi sebagai bentuk adalah penutupan.
key_up: Inilah yang mengirimkan pesan kami ke jendela obrolan. Karena saya
melakukannya pada tombol Facebook acara, mereka akan melihat apa yang Anda mengetik
seperti yang Anda trype. Untuk aplikasi yang sebenarnya fungsi ini akan ditambahkan ke
tombol Kirim, atau ketika hits pengguna Enter.
Run: Ini adalah menjalankan aplikasi chatting, streaming yang sedang membaca dan
menambahkan ke isi saat jendela chatting, dan menempatkan kursor pada akhir teks yang
sudah dalam kotak teks Anda mengetik pesan Anda ke
Bagaimana saya menambahkan teks ke isi saat jendela chat adalah dengan menggunakan
Metode AppendText dari Kelas TextBox.
Pertama mari kita melihat kode untuk Event Penutupan formulir.
Bila menggunakan formulir menutup, itu panggilan Metode Application.Exit, maka panggilan
ke Fungsi ExitProcess.
Selanjutnya kita memiliki kode untuk Event Control.KeyUp, yang adalah apa yang kita
mengirimkan pesan ke jendela obrolan. Dalam metode ini, kita membuat StreamWriter untuk
menulis ke aliran saat ini. Untuk melakukan hal ini kita sebut Metode GetStream kelas
System.Net.Sockets.TcpClient. GetStream mengambil kembali NetworkStream saat ini,
digunakan untuk mengirim dan menerima pesan melalui jaringan.
Selanjutnya kita memiliki kode untuk method run kita. Ini menciptakan Obyek
StreamReader, menggunakan GetStream untuk mengambil NetworkStream saat ini, ini akan
digunakan untuk membaca pesan di sungai. Kami kemudian tambahkan nilai dalam arus
saat ini, baris demi baris, untuk jendela chat.
Itu adalah akhir dari tutorial Dasar Client / Server Aplikasi Chat di C #. Saya melampirkan
ketiga file dengan tutorial ini. Mereka berada di bawah GNU Public License yang berarti
Anda dapat memodifikasi kode sesuai dengan kebutuhan Anda, tetapi Anda perlu
memberikan referensi ke pencipta asli kode. Juga, Anda tidak diperbolehkan untuk
menghapus header lisensi pada awal semua file dalam solusi ini.
Saya harap Anda menikmati tutorial ini, dan menemukan itu berguna. Saya kemudian akan
menulis tutorial untuk maju klien / server aplikasi chat, untuk menunjukkan apa yang dapat
dilakukan dengan teknik yang kita pelajari dalam tutorial ini.
Terima kasih banyak untuk membaca
CATATAN: Anda akan ingin mengambil Kelas ChatServer dan mungkin membuat aplikasi
keluar dari itu juga. Saya sebagai file kelas karena saya menggunakan implementasi yang
berbeda dari server.
Top Related