Professional Documents
Culture Documents
Mc Lc
I- Gii thiu v .Net Remoting: ................................................................................ 2 1/ .Net Remoting ...................................................................................................... 2 2/ .NET Remoting so vi Web Services .................................................................. 2 3/ Remote Objects trong .NET Remoting ................................................................ 3 4/ Domain ................................................................................................................. 4 5/ Channel ................................................................................................................. 4 6/ Object Activation: ................................................................................................ 4 7/ Client Activated Objects: ..................................................................................... 5 8/ To mt Remotable Object: ................................................................................. 6 II- Gii thiu v Socket: .............................................................................................. 6 1/ Socket ................................................................................................................... 6 2/ Chc nng ............................................................................................................. 7 3/ Phn loi ............................................................................................................... 7 4/ Thnh phn ........................................................................................................... 7 5/ Cc ch giao tip ............................................................................................. 9 6/ Xy dng ng dng Client-Server vi Socket ................................................... 10 IIIChng trnh LAN Messenger: ...................................................................... 13 1/ Tng quan cc Form trong chng trnh .............................................................. 13 2/ Cc th vin km theo chng trnh .................................................................... 14 3/ Cc k thut dng trong chng trnh .................................................................. 14 4/ Cc tnh nng lm c cho mt chng trnh Chat qua mng LAN ............. 14 5/ Cc tnh nng cha lm c, s ci thit hoc pht trin cc phin bn k tip .................................................................................................................................. 15 6/ Hng dn s dng chng trnh: ........................................................................ 15 IVTi liu tham kho: .......................................................................................... 25
I- Gii thiu v .Net Remoting: 1- .Net Remoting: .Net Remoting l c ch giao tip gia cc i tng (object) m khng cng thuc mt Process. Gip cc lp i tng thuc cc ng dng khc nhau c th lin lc c vi nhau. Cc i tng ca cc ng dng ny c th c thit lp trn cng mt my tnh hay cc my tnh khc nhau v c giao tip t xa thng qua cc giao thc kt ni nh HTTP, TCP. Microsft .Net Remoting c gii thiu t .Net Framework 1.1 cng vi Webservice. Cung cp cc k thut cho php mt i tng ny truy xut n mt i tng khc nm cc Application Domain khc nhau.
2- .NET Remoting so vi Web Services: V kha cnh x l t xa th Web Services hon ton tng t nh .NET Remoting. Thm ch ngi ta c th lm cho .NET Remoting tr thnh 1 Web Services bng cch host n trong IIS. Web Services cho php cc ng dng c th giao tip vi nhau m khng ph thuc platform, ngn ng lp trnh, Tuy nhin Web Services l mt mi trng stateless, c ngha l n khng lu li bt k trng thi g ca ln gi trc v n cng khng bit g v pha client ang thc hin request. Client v server Web Services ch c th trao i vi nhau bng cc thng ip SOAP. Nhng iu sau y l cc im khc nhau chnh gia .NET Remoting v Web Serices, chng cng l nhng nhn t ta chn la gia 2 cng ngh ny: ASP.NET Web Services ch c th c truy xut qua HTTP cn .NET Remoting c th c dng trn nhiu giao thc khc nhau nh TCP, HTTP. 2
Web Services l mt mi trng stateless. Khi c mt request t pha client, s c mt object mi c to ra thc hin request trn server. Cn .NET Remoting li h tr nhiu la chn state management v c th thc hin nhiu request t mt client, ng thi c h tr callbacks. Web Services serialize cc i tng thnh XML bn trong SOAP message v v th c th truyn ti thng tin ca bt c thnh phn no min c th chuyn thnh XML. Cn i vi .NET Remoting th ty giao thc v nh dng message m n c th truyn i thng tin nh th no. Ngoi ra theo nh gii thiu th .NET Remoting c cho php i tng c truyn vo theo c kiu tham chiu(reference) v tham tr (value) Web services c th hot ng trn cc platform mi trng khc nhau trong khi .NET Remoting yu cu pha clients phi l .NET application.
3- Remote Objects trong .NET Remoting: Nu nh mt chng trnh n th cc i tng s cng thuc trong ng dng , v chng d dng giao tip c vi nhau; y c th c coi l Local Objects. Tuy nhin nu cc i tng li thuc nhng ng dng khc nhau (cc Application domain khc nhau) th cn c nhng Remote Object giao tip vi nhau. Remote Object c th c dn xut t MarshalByRefObject hay s dng [Serializable] tag hoc bng cch to cc giao din ISerializable. Cc loi Remote Object: Trong .NET Remoting, c hai c ch to instance ca Remote Object ri t thc thi request. l Singleton v Singlecall. Ty vo mc ch s dng, nhu cu ca ng dng m server c th khai bo theo c ch WellKnownObjectMode.SingleCall, hay WellKnownObjectMode.Singleton. Single Call Object: Remote Object s c sinh ra, thc thi request, tr li cho client, sau Object ny vn c lu li ch khng b hy i. n khi no process chy chng trnh Server kt thc th instance ny mi b trnh ht rc Garbage Collection ht i. Singleton Object: Ngc li vi Single Call, khi khai bo Remote Object l Singleton th Remote Object s c khi to v hy i i vi mi ln nhn request t pha Client. C ch ny tng t nh m hnh .NET Webservice truyn thng. Client-Activated Objects (CAO): Thuc kiu Server-side object, chng ch c kch hot mi khi c request n t Client. Khi mt Client gi mt request ti Server s dng ton t new, mt thng ip s c gi ti
Remote Application. Server sau s to ra mt Instance ca lp c yu cu, v tr v mt ObjRef cho Client Application. 4- Domain: Trong .NET, khi mt ng dng c np vo trong b nh, mt tin trnh c to ra, v trong qu trnh ny, mt min ng dng (Application Domain) cng c to ra. Trn thc t, ng dng ny s c np vo Application Domain. Mi ng dng c thuc cc Application Domain khc nhau, v th nu chng mun giao tip c vi nhau th phi s dng Remoting ch khng th giao tip trc tip vi nhau c. Cc Application Domain c th cng thuc mt process hoc khc process. 5- Channel: Trong k thut .NET Remoting th Channel c hiu nh l mt knh giao tip gia client v server. Mt Object t Client s thng qua Channel giao tip vi Object pha server, Channel s truyn ti nhng message t hai pha. Nh gii thiu pha trn th c hai channel chnh l TcpChannel v HttpChannel tng ng vi cc giao thc TCP v HTTP. Ngoi ra, TcpChannel v HttpChannel u c kh nng extend thnh nhng Custom Channel. Cc nguyn tc khi thit lp mt Channel: Cn c t nht mt Channel c ng k vi .NET Remoting trc khi Remote Object c gi. V cc Channels ny cn ng k trc cc Remote Object. - Channel c ng k trong mi Application Domain hoc nhiu Application Domain thuc mt Process. Khi Process kt thc th cc Channel ny cng t ng c hy i. - Khng th ng k cc Channel khc nhau trn cng mt port thuc cng mt my tnh mc d cc Channel ny c th cc Application Domai khc nhau. Khi thit lp nhiu Channel trn cng mt my tnh th chng cn listen cc port khc nhau. - Client lin lc vi Remote Object thng qua cc knh ng k bng vic gi cc RegisterChannel trn lp ChannelService. 6- Object Activation: Server Actived Object ch c to ra ln u tin Client thit lp cuc gi ti cc Remote Method. Hay ni cch khc, Khi mt Client yu cu to ra cc Remote Object th ch cc proxy cc b c to ra Client, cn Remote Object thc t nm trn Server. Cc Remote Object ny s c khi to ln u tin Client thip lp cuc gi cho Server. V d to ra cc Proxy nh sau:
...
// Trn Server RemotingConfiguration.RegisterWellKnownServiceType( typeof (RemoteServerObject), "Test", WellKnownObjectMode.SingleCall); ... // Trn Client IRemoteCom obj = (IRemoteCom)Activator.GetObject(typeof(IRemoteCom), "tcp://localhost:1002/Test"); ...
Nh ni trn, chng ta c hai c ch to instance ca Remote Object l Single Call v Singleton. on m v d ca n nh sau:
RemotingConfiguration.RegisterWellKnownServiceType( "Test", WellKnownObjectMode.SingleCall); ... RemotingConfiguration.RegisterWellKnownServiceType( "Test", WellKnownObjectMode.Singleton);
typeof(RemoteServerObject),
typeof(RemoteServerObject),
7- Client Activated Objects: i tng Client Activated Object c to ra mi trn Server ngay lp tc mi khi c request t Client hoc cng c th to ra bng t kha new hoc Activator.CreateInstance().
... // On the Server RemotingConfiguration.ApplicationName = "TestCAO"; RemotingConfiguration.RegisterActivatedServiceType(typeof(RemoteObjectCAO)); ... // On the Client RemotingConfiguration.RegisterActivatedClientType(typeof(RemoteObjectCAO), "tcp://localhost:1002/TestCAO"); obj = new RemoteObjectCAO(); ...
Ty thuc vo hon cnh v nhu cu m ta s dng loi khc nhau. V d: Singleton object c dng tham chiu n nhng i tng cng trn mt server, v bt k thay i ca Client cng s visible (hin hu) vi nhng 5
Client khc. V d nh trong h iu hnh Windows, khi mt chng trnh thay th cc Client Program khc cng bit c. D liu s c lu trn my ch v c truy cp bi tt c cc Client - Chng ta s dng SingleCall khi mun cung cp mt mi trng stateless (Kiu ging ca Web services truyn thng. - Chng ta s dng Client Activation nu i ng cn phi c duy try trng thi kt ni lin tc, trao i thng tin vi cc client khc. 8- To mt Remotable Object: Mt Remote Object l mt i tng c k tha t lp MarshalByRefObject. Trong C#, khi to mt lp th vin mi. Ta Add thm lp c tn MarshalByRefObject nh ni trn. Khai bo using System.Runtime.Remoting c th s dng c cc TcpChannel hay HttpChannel. V d:
MyRemotableObject.cs namespace RemotableObjects { public class MyRemotableObject : MarshalByRefObject { public MyRemotableObject() { } public void SetMessage(string message) { Cache.GetInstance().MessageString = message; } } }
II- Gii thiu v Socket: 1- Socket: Socket l mt phng php thit lp kt ni truyn thng gia mt chng trnh yu cu dch v ( client) v mt chng trnh cung cp dch v (server) trn mng LAN, WAN hay Internet v i lc l gia nhng qu trnh ngay bn trong my tnh. Mi socket c th c xem nh mt im cui trong mt kt ni. Mt socket trn my yu cu dch v c a ch mng c cp sn gi mt socket trn my cung cp dch v. Mt khi socket c thit lp ph hp, hai my tnh c th trao i dch v v d liu. Socket c gii thiu ln u tin trong n bn UNIX - BSD 4.2. di dng cc hm h thng theo c php ngn ng C (socket(), bind(), connect(), send(), receive(), read(), write(), close() ,..). Ngy nay, Socket 6
c h tr trong hu ht cc h iu hnh nh MS Windows (WinSock), Linux v c s dng trong nhiu ngn ng lp trnh khc nhau: nh C, C++, C#, Java, Visual Basic, Visual C++ . . . 2- Chc nng: Socket cho php thit lp cc knh giao tip m hai u knh c xc nh bi hai cng (port). Thng qua cc cng ny mt tin trnh c th nhn v gi d liu vi cc tin trnh khc.
3- Phn loi: C cc loi Socket chnh l: + Socket kiu AF_UNIX ch cho php giao tip gia cc tin trnh trong cng mt my tnh. + Socket kiu AF_INTET cho php giao tip gia cc tin trnh trn nhng my tnh khc nhau trn mng.
Phn loi theo kiu kt ni: + Socket hng kt ni (TCP Socket) + Socket khng hng kt ni (UDP Socket) 4- Thnh phn: 4.1- S hiu cng (Port Number) ca Socket c th thc hin cc cuc giao tip, mt trong hai tin trnh phi cho bit s hiu cng ca socket m mnh s dng. Mi cng giao tip th hin mt a ch xc nh trong mt h thng. Khi tin trnh c gn mt s hiu cng (Server), n c th nhn d liu gi n cng ny t tin trnh khc (Client). Tin trnh cn li cng 7
yu cu to ra mt socket. 4.2- a ch IP Ngoi s hiu cng, hai bn giao tip cn phi bit a ch IP ca nhau. Trong khi s hiu cng dng phn bit cc qu trnh khc nhau trn cng mt my tnh th IP dng phn bit cc my tnh khc nhau trn cng mt mng TCP/IP.
Trong hnh trn, a ch ca tin trnh B1 c xc nh bng 2 thng tin: (Host B, Port B1) + a ch my tnh c th l a ch IP dng 118.69.123.139 hay l a ch theo dng domain nh www.uit.edu.vn. + S hiu cng gn cho Socket phi l duy nht trn phm vi my , c gi tr trong khong t 0-65535 (16 bits). Trong cc cng t 1-1023 c gi l cng h thng c dnh ring cho cc tin trnh ca h thng. S hiu cng 21 23 25 80 110 Qu trnh h thng Dch v FTP Dch v telnet Dch v mail (SMTP) HTTP Mail (POP3)
443
HTTPS
Tng vn chuyn (Transport Layer) gip chuyn tip cc thng ip gia cc chng trnh vi nhau. N c th hot ng theo hai ch : + Giao tip c ni kt, nu gia chng s dng giao thc TCP. + Giao tip khng kt ni, nu s dng giao thc UDP. Socket l giao din gia chng trnh v lp vn chuyn. N cho php ta chn giao thc s dng tng vn chuyn l TCP hay UDP cho chng trnh ng dng ca mnh. Bng so snh s khc bin gia hai ch giao tip c kt ni v khng kt ni. Ch c ni kt + Tn ti knh giao tip o gia hai bn giao tip. + D liu c gi i theo bo m: c kim tra li, truyn li gi tin li hay mt, m bo th t ca cc gi tin. + D liu chnh xc nhng tc truyn chm. Ch khng ni kt + Khng tn ti knh giao tip o gia hai bn. + D liu c gi i khng m bo: Khng kim tra li, khng pht hin v truyn li gi tin b li hay mt, khng m bo th t n ca cc gi tin. + D liu khng chnh xc, tc truyn nhanh. 9
6- Xy dng ng dng Client-Server vi Socket: Socket l phng tin hiu qu xy dng cc ng dng theo kin trc Client-Server. Cc ng dng trn Internet nh Web, Mail, FTP.. . l cc v d in hnh. Chng ta s tm hiu v cc bc c bn trong vic xy dng cc ng dng Client-Server s dng Socket lm phng tin giao tip theo ch hng kt ni (c ng dng trong phn gi file v gi hnh nh trong chng trnh). M hnh Client-Server s dng Socket ch c kt ni (TCP) Giai on 1: Server to Socket, gn s hiu cng v lng nghe cc kt ni.
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
public void StartListening() { byte[] bytes = new Byte[1024]; IPEndPoint ipEnd = new IPEndPoint(IPAddress.Any, 6565); Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); try { listener.Bind(ipEnd); listener.Listen(100); while (true) { allDone.Reset(); listener.BeginAccept(new AsyncCallback(AcceptCallback), listener); allDone.WaitOne(); } } catch (Exception ex) { UpdateStatus(ex.Message); } }
10
Ta thy Server khi to mt Socket gm IP v port 6565 v sn sng lng nghe kt ni trn cng 6565 t Client. Giai an 2: Client to Socket, yu cu thit lp mt ni kt vi Server
1. 2. 3. 4. 5. 6.
private void btnSend_Click(object sender, EventArgs e) { Socket clientSock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); byte[] fileName = Encoding.UTF8.GetBytes(fName); // tn file byte[] fileData = File.ReadAllBytes(txtFileLink.Text); // d liu byte[] fileNameLen = BitConverter.GetBytes(fileName.Length); // di tn file clientData = new byte[4 + fileName.Length + fileData.Length]; fileNameLen.CopyTo(clientData, 0); fileName.CopyTo(clientData, 4); fileData.CopyTo(clientData, 4 + fileName.Length); lblStatus.Text = "ang kt ni ti ngi nhn..."; clientSock.Connect(IP, 6565); // IP my ch lblStatus.Text = "ang truyn ti d liu. Lm n i..."; clientSock.Send(clientData); clientSock.Close(); lblStatus.Text = "File c chuyn i thnh cng!"; }
- Client yu cu khi to mt socket s dng cc dch v ca tng vn chuyn, h thng s kim tra xem port no cn trng s t ng gn cho socket ca Client.
Socket clientSock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
11
- Sau khi Server chp nhn kt ni ca Client, khi mt knh giao tip o c hnh thnh, Client v Server c th trao i thng tin vi nhau. Giai an 3: Trao i thng tin gia Client v Server
- Sau khi chp nhn yu cu kt ni, Server i Clinet gi yu cu n. y, Client dng clientSock.Send(clientData)gi ln lt cc byte ca d liu ln Server. Sau khi nhn c d liu t Client, Server tin hng chuyn i d liu nhn c l cc byte d liu thnh tn ca file m Client gi v d liu ca file. Trong qu trnh ny, gia Client v Server s lin tc trao i thng tin vi nhau v cc cc d liu nhn c, tun th theo cc quy tc ca giao thc xc lp t trc. Giai on 4: Kt thc phin lm vic
Sau khi d liu gi xong, client s gi yu cu hy kt ni clientSock.Close(); v knh o kt ni vi Server s b ng. Nh vy, ton b qu trnh s din ra nh sau. 12
13
14
15
16
To ti khon:
Ti ca s ng nhp, chn To ti khon mi s dng.
Trong Form ng k, cung cp nhng thng tin v tn ti khon, mt khu v tn hin th. Sau chn To.
17
MessageBox thng bo vic to ti khon thnh cng. Chng ta c th s dng ti khon ny ng nhp vo chng trnh. Chn ng nhp. V vo giao din chnh ca chng trnh.
18
M rng
M mt Room Chat Tr gip Tham gia Room Chat Hng dn s dng Thng tin
Ca s chat:
Ca s Chat:
19
Menu
Phm tt
M t Gi Emoticons ti bn Chat
Gi ting Buzz ti bn Chat Chia s file ti bn Chat Chia s hnh nh Chia s File
Ctrl+G
Chia s file:
Gi file: Bm "Chn file cn gi" chn file mun chia s. H tr tt c cc loi file. Sau chn Gi. Kt qu ca qu trnh gi file s c cp nhn thanh Trng thi. Lc cha gi:
Gi thnh cng:
20
21
Bn nhn nh:
Webcam
Hin th webcam 2 ngi ang chat trc tip vi nhau.
22
Nghe nhc:
Menu Nhp tn bi ht cn tm (1) Danh sch bi ht tm c (2) Thng tin ca bi ht (3) Mi bn trong list nghe nhc (4) Tm kim(5) Ti v my (6)
Chc nng Tm kim bi ht t mp3.zing.vn Kt qu tm kim c ca bi ht trn Thng tin lin quan ti bi ht bao gm v tn bi ht v ngi trnh by Mi bn c trong danh sch cng nghe nhc Tm kim bi ht Download bi ht c chn v my
Phm tt
M t Tm kim bi ht t mp3.zing.vn Kt qu tm kim c ca bi ht trn Thng tin lin quan ti bi ht bao gm v tn bi ht v ngi trnh by Mi bn c trong danh sch cng nghe nhc Tm kim bi ht Download bi ht c chn v my
23
To Room Chat
Menu Ni dung chat (1) Nick trong Room (2) Mi thm bn chat (3) Khung son tho (4)
Chc nng Hin th ni dung chat ca c phng chat Danh sch cc nick tham gia room chat Mi bn c trong danh sch bn b tham gia vo phng chat Khung son ni dung chat
M t Hin th ni dung chat ca c phng chat Danh sch cc nick tham gia room chat Mi bn c trong danh sch bn b tham gia vo phng chat Khung son ni dung chat
24
IV- Ti liu tham kho: Din n Cng ng C vit - http://www.congdongcviet.com. Cng ng CodeProject http://www.codeproject.com.
25