You are on page 1of 5

Sau y l code chng trnh:Vit cho pha Client. using using using using using using System; System.Collections.

Generic; System.Linq; System.Text; System.Net.Sockets; System.Net;

namespace ConsoleApplication1 { class Program { static void Main(string[] args) { //Mng kiu byte lu tr d liu di dng byte. byte[] data = new byte[1024]; //Chui cha gi tr nhp t bn phm do ngi dng nhp vo. string input=""; //Chui ny dng convert t mng kiu byte sang String. string strData=""; //To 1 TcpClient kt ni ti Server. TcpClient client = new TcpClient(); try { //Kt ni ti server localhost. client.Connect("127.0.0.1", 8000); Console.WriteLine("Dang ket noi toi server.."); } catch (SocketException ex) { Console.WriteLine("Error:",ex.Message); return; } Console.WriteLine("Ket noi thanh cong."); //To ra lung Stream gi v nhn thng tin. NetworkStream ns = client.GetStream(); //Gi chui ln Server. data = Encoding.ASCII.GetBytes("Chao server."); ns.Write(data, 0, data.Length); //Nhn d liu gi t Server. data = new byte[1024]; ns.Read(data, 0, data.Length); strData = Encoding.ASCII.GetString(data); Console.WriteLine("Server gui: {0}",strData); //Bin ny lu tr di ca d liu thc s nhn c. int recv;

Bin tp: thienthanit@yahoo.com

Ngun: Internet

while (true) { input = Console.ReadLine(); //Nu ngi dng nhp exit th thot. if (input.Equals("exit")) break; //Chuyn chui nhn c sang mng byte. data = Encoding.ASCII.GetBytes(input); //Gi cho Server. ns.Write(data, 0, data.Length); //Set li mng byte. data = new byte[1024]; //Nhn d liu recv = ns.Read(data, 0, data.Length); //Chuyn mng byte nhn c thnh String strData = Encoding.ASCII.GetString(data, 0, recv); //In ra mn hnh. Console.WriteLine("Server:{0}",strData); } //ng kt ni. Console.WriteLine("Ngat ket noi toi server."); //Ch l phi ng lung c, ghi d liu Stream. ns.Close(); client.Close(); } } } Gii thch: _ Chng trnh trn ca mnh hot ng nh sau: u tin n s kt ni ti Server ( C th l locahost ca my tnh), khi kt ni thnh cng s gi chui Chao server. ti Server. Tip s l giao tip gia Client v Server, ging nh chng trnh chat. c im y l dng m hnh TCP, nn khi bn gi i t Client, s phi ch tr li t Server ri mi c gi tip.

Gii thiu v TcpClient class:

_Nm trong namespace :System.Net.Sockets; _Dng vit cc ng dng cho my khch (Client). a)TcpClient class constructor. _C 3 constructor cho class TcpClient. + TcpClient(): Khng c tham s. N s to ra mt i tng TcpClient v rng buc n vo a ch IP ca my tnh cc b( c th l my tnh m chng trnh chy) v mt cng ( Port) ly ngu nhin (Random). Sau khi i tng c to ra th n phi kt ni ti mt Server, thit b t xa bng phng thc Connect(). + TcpClient(IPEndPoint localIEP): To ra mt i tng TcpClient v gn n v mt a ch IP v s hiu cng do bn nh ngha trong IPEndPoint. constructor ny thng c s dng khi m thit b c nhiu hn mt card mng. Mt ln na, khi i tng c to ra th n phi kt ni ti thit b t xa, server thng qua phng thc Connect(). + TcpClient(String host, int Port):To ra mt i tng TcpClient, kt ni ti Server, thit b t xa, c khai bo ngay trong constructor m khng cn phi s dng phng thc Connect(). Nh bn thy trong constructor ny c 2 tham s l, host kiu String v Port c kiu int . Host: c th l mt hostname hoc l 1 a ch IP ca server m ta cn kt ni ti. Port l s hiu cng. b) Cc phng thc: Close(): ng kt ni. Connect():Kt ni ti Server.

Bin tp: thienthanit@yahoo.com

Ngun: Internet

Equals(). GetStream():To ra mt i tng Stream, dng cho vic gi v nhn d liu. GetType() ToString(). C)Cc thuc tnh: LingerState:Ly hoc gn thi gian tr hon. NoDelay:Ly hoc gn thi gian tr hon, c s dng trong gi hoc nhn d liu t b m TCP. ReceiveBufferSize:Ly hoc gn kch thc ca b m nhn d liu TCP. ReceiveTimeout:Ly hoc gn gi tr thi gian ch nhn d liu ca Socket. SendBufferSize:Ly hoc gn kch thc ca b m gi d liu TCP. SendTimeout:Ly hoc gn kch thc ca thi gian nhn d liu ca Socket. ----------------

Nguyn tc gi v nhn d liu:

_Nguyn tc chung: Khi gi v nhn d liu th cc bn tun theo nguyn tc sau y: _D liu t dng String cn phi chuyn thnh mng byte trc khi c chuyn i, v theo nguyn l mng my tnh th trn ng truyn vt l s ch gi cc d liu dng bit: 0 or 1.
Code:

string StrData="Chao Server."; byte[] data= new byte[1024]; ...... data = Encoding.ASCII.GetBytes(StrData); .....//Gi d liu i. _Khi nhn d liu th cn phi chuyn byte li thnh dng String sau hin th ra mn hnh.
Code:

byte[] data = new byte[1024]; String Input=""; ........//Nhn d liu Input= Encoding.ASCII.GetString(data,0,data.Length); Console.WriteLine(input);

Ch :
_Sau khi kt thc th cn phi ng lung c ghi (Stream). _ng kt ni bng phng thc Close().

Lp TcpListener c dng xy dng cc ng dng trn Server, gip cho n gin ha lp trnh. Lp TcpListener c 3 constructor: _TcpListener(int port): To ra mt i tng TcpListener v rng buc n vo s hiu cng cc b c ch nh. _TcpListener(IPEndPoint ie): To ra mt i tng TcpListener v rng buc n vo 1 EndPoint cc b c ch nh. _TcpListener(IPAddress,int port): To ra mt i tng TcpListener v rng buc n 1 a ch IPAddress cc b v s hiu cng. Quy trnh thc hin: _Khi mt i tng TcpListener c to ra th bn c th bt u lng nghe cc kt ni, s dng phng thc Start(). _Sau phng thc Start(), bn phi s dng 1 trong 2 phng thc AcceptSocket() hoc

Bin tp: thienthanit@yahoo.com

Ngun: Internet

AcceptTcpClient() chp nhn cc kt ni. Nh bn nhn thy, c 2 phng thc chp nhn cc kt ni v tr v 1 i tng Socket hoc TcpClient. Ta c Code nh sau:
PHP Code:

using using using using using using

System; System.Collections.Generic; System.Linq; System.Text; System.Net; System.Net.Sockets;

namespace Server { class Program { static void Main(string[] args) { TcpListener server = new TcpListener(IPAddress.Parse("127.0.0.1"), 8000); server.Start(10); Console.WriteLine("Bat dau lang nghe....."); TcpClient client = server.AcceptTcpClient(); Console.WriteLine("Chap nhan ket noi."); Console.WriteLine("Bat dau chat!"); byte[] data = new byte[1024]; NetworkStream ns = client.GetStream(); string nhan = ""; string chat = ""; //Nhan chuoi tu Client, dua vao mang byte. ns.Read(data, 0, data.Length); //Chuyen hoa thanh String. nhan = Encoding.ASCII.GetString(data); Console.WriteLine("Client: {0}", nhan); while (true) { //Gui cho Client. chat = Console.ReadLine(); data = new byte[1024]; data = Encoding.ASCII.GetBytes(chat); ns.Write(data,0,data.Length); //Nhan chuoi tu Client. data = new byte[1024]; ns.Read(data, 0, data.Length); nhan = Encoding.ASCII.GetString(data); Console.WriteLine("Client: {0}", nhan); } //Dong ket noi. ns.Close(); client.Close(); server.Stop(); } }

Bin tp: thienthanit@yahoo.com

Ngun: Internet

Gii thch:
_Chng trnh s chn li phng thc AcceptTcpClient() v ch i mt kt ni mi t Client. Mt khi kt ni ri th bn s dng phng thc GetStream() to ra mt NetworkStream thc thi cho vic gi v nhn d liu trn Socket. _Lu :Ta lun lun phi ng NetworkStream khi xong vic nh l bn nh phi ng i tng TcpClient khi chng ta hon thnh.Bn cng phi ng TcpListener bng phng thc Stop(). _Quy tc gi v nhn d liu bn xem li phn trc: TcpClient. Cc phng thc v thuc tnh ca lp TcpListener cc bn c th tra cu trong MSDN.

Bin tp: thienthanit@yahoo.com

Ngun: Internet

You might also like