Chat Client Server

Post on 26-Jun-2015

133 views 1 download

Transcript of Chat Client Server

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.