intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng lập trình mạng với C

Chia sẻ: Phan Thi Ngoc Giau | Ngày: | Loại File: PDF | Số trang:0

76
lượt xem
16
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tham khảo tài liệu 'bài giảng lập trình mạng với c', công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả

Chủ đề:
Lưu

Nội dung Text: Bài giảng lập trình mạng với C

  1. CHƯƠNG 1: CÁC KI N TH C CƠ B N V M NG MÁY TÍNH.......................................3 1.1. Mô hình tham kh o 7 t ng OSI........................................................................................3 1.2. H giao th c TCP/IP........................................................................................................5 1.3. So sánh gi a hai giao th c TCP và UDP .........................................................................6 1.4. C ng giao th c.................................................................................................................7 1.5. ð a ch IP, các ñ a ch IP dành riêng................................................................................7 1.6. ð a ch tên mi n: lo i A, lo i MX.. .................................................................................8 1.7. M t s giao th c t ng ng d ng: HTTP, SMTP, POP3, FTP... ...................................8 CHƯƠNG 2: L P TRÌNH M NG TRONG .NET FRAMEWORK ........................................9 2.1. Socket hư ng k t n i (TCP Socket) ................................................................................9 2.1.1. Gi i thi u v NameSpace System.Net và System.Net.Sockets ..............................10 2.1.2. Vi t chương trình cho phía máy ch .......................................................................11 2.1.3. Vi t chương trình cho phía máy khách...................................................................13 2.1.4. S d ng các lu ng nh p xu t v i Socket................................................................14 2.2. Socket không hư ng k t n i (UDP Socket)...................................................................17 2.2.1. Vi t chương trình cho phía máy ch .......................................................................17 2.2.2. Vi t chương trình cho phía máy khách...................................................................18 2.2.3. S d ng l p System.IO.MemoryStream ñ t o vùng ñ m nh p xu t.....................20 2.3. S d ng các l p h tr ñư c xây d ng t l p Soket .....................................................20 2.3.1. L p TCPClient........................................................................................................21 2.3.2. L p TCPListener ....................................................................................................22 2.3.3. L p UDPClient .......................................................................................................24 2.4. Socket không ñ ng b ....................................................................................................26 2.4.1. Mô hình x lý s ki n c a windows .......................................................................26 2.4.2. S d ng Socket không ñ ng b ..............................................................................27 2.4.3. Ví d v Socket không ñ ng b ..............................................................................28 2.4.4. S d ng các phương th c Non-blocking ................................................................35 2.5. S d ng Thread trong các ng d ng m ng ....................................................................39 2.5.1. S d ng Thread trong chương trình .Net ................................................................40 2.5.2. S d ng Thread trong các chương trình Server ......................................................41 2.5.3. S d ng Thread ñ g i/nh n d li u.......................................................................41 2.5.4. S d ng ThreadPool trong các chương trình .Net ..................................................43 2.5.5. S d ng ThreadPool trong các chương trình Server...............................................47 2.6. K thu t IP Multicasting................................................................................................48 2.6.1. Broadcasting là gì?..................................................................................................48 2.6.2. S d ng Broadcasting ñ g i d li u ñ n nhi u máy trong m ng c c b ..............48 2.6.3. Multicasting là gì? ..................................................................................................49 2.6.4. Socket Multicasting trong .Net ...............................................................................50 2.7 Bài t p áp d ng ...............................................................................................................53 CHƯƠNG 3: XÂY D NG NG D NG M NG ...................................................................55 3.1. Giao th c ICMP.............................................................................................................55 3.1.1. S d ng Raw Socket...............................................................................................55 3.1.2. S d ng giao th c ICMP và Raw Socket ñ xây d ng chương trình Ping.............57 3.1.3. S d ng giao th c ICMP và Raw Socket ñ xây d ng chương trình TraceRoute .58 3.2. Giao th c SMTP, POP3.................................................................................................60 3.2.1. Cơ b n v h th ng Mail và giao th c SMTP, POP3 .............................................60 3.2.2. Cài ñ t SMTP, POP3 Client/Server ........................................................................60 3.3. Giao th c HTTP.............................................................................................................67 3.3.1. Cơ b n v giao th c HTTP .....................................................................................67 3.3.2. Cài ñ t HTTP Client/Server....................................................................................68 3.4. Giao th c FTP................................................................................................................74 3.4.1. Cơ b n v giao th c FTP ........................................................................................74 3.4.2. Cài ñ t FTP Client/Server.......................................................................................84 1
  2. 3.5. DNS (Domain Name Server) .........................................................................................88 3.5.1. V n ñ phân gi i tên mi n ......................................................................................88 3.5.2. Tri n khai DNS MX (Mail Exchange) ...................................................................89 3.6 Th o lu n v các ng d ng khác thư ng g p .................................................................93 3.7 Bài t p áp d ng ...............................................................................................................93 CHƯƠNG 4: XÂY D NG NG D NG NHI U L P ..........................................................94 4.1. Mô hình 2 l p (two tier), 3 l p (three tier) và n l p. .....................................................94 4.2. Remoting........................................................................................................................98 4.2.1. Gi i thi u v Remoting.........................................................................................102 4.2.2. Khai báo, cài ñ t và ñăng ký giao di n t xa ........................................................102 4.2.3. Tri u g i phương th c t xa .................................................................................107 4.3. Web Serive...................................................................................................................107 4.3.1. Gi i thi u v Web Serives ....................................................................................107 4.3.2. Giao th c SOAP ...................................................................................................109 4.3.3. Xây d ng Web Services........................................................................................112 4.3.4. Tri u g i Web Services t ng d ng .NET, Java và các ngôn ng khác .............114 4.4 Th o lu n v các ng d ng phân tán ............................................................................116 4.5. Bài t p áp d ng ............................................................................................................116 2
  3. CHƯƠNG 1: CÁC KI N TH C CƠ B N V M NG MÁY TÍNH 1.1. Mô hình tham kh o 7 t ng OSI Mô hình k t n i h th ng m ñư c T ch c qu c t v tiêu chu n hoá ISO (International Organizaiton for Standardization) ñưa ra nh m cung c p m t mô hình chu n cho các nhà s n xu t và cung c p s n ph m vi n thông áp d ng theo ñ phát tri n các s n ph m vi n thông. Ý tư ng mô hình hoá ñư c t o ra còn nh m h tr cho vi c k t n i gi a các h th ng và modun hoá các thành ph n ph c v m ng vi n thông. a. Ch c năng c a mô hình OSI: - Cung c p ki n th c v ho t ñ ng c a k t n i liên m ng - ðưa ra trình t công vi c ñ thi t l p và th c hi n m t giao th c cho k t n i các thi t b trên m ng. Mô hình OSI còn có m t s thu n l i sau : - Chia nh các ho t ñ ng ph c t p c a m ng thành các ph n công vi c ñơn gi n. - Cho phép các nhà thi t k có kh năng phát tri n trên t ng modun ch c năng. - Cung c p các kh năng ñ nh nghĩa các chu n giao ti p có tính tương thích cao “plug and play” và tích h p nhi u nhà cung c p s n ph m. b. C u trúc mô hình OSI: Mô hình OSI g m 7 l p (level), m i l p th c hi n các ch c năng riêng cho ho t ñ ng k t n i m ng. Hình 1-1 Mô t b y l p OSI. 4 l p ñ u ñ nh nghĩa cách th c cho ñ u cu i thi t l p k t n i v i nhau ñ trao ñ i d li u. 3 l p trên dùng ñ phát tri n các ng d ng ñ ñ u cu i k t n i v i nhau và ngư i dùng. Aplication Application Presentation (Upper Layer) Session Transport Layer Data Lower Layer Network Layer Data Link Physical Các l p trên 3 l p trên cùng c a mô hình OSI thư ng ñư c g i là các l p ng d ng (Application layers) hay còn g i là các l p cao. Các l p này thư ng liên quan t i giao ti p v i ngư i dùng, ñ nh d ng c a d li u và phương th c truy nh p các ng d ng ñó. Hình 1-2 Mô t các l p trên và cung c p thông tin v i các ch c năng c a nó qua ví d: ng d ng: ch c năng giao Telnet, HTTP -Lp 3
  4. ti p gi a ngư i s d ng và các Application chương trình ng d ng - L p trình bày: cách th c chu n ASSCII hoá d li u và trình bày s li u Presentation EBCDIC - Có ch c năng ñ c bi t là mã hoá JPEC d li u ngư i s dung - L p phiên: thi t l p, duy trì và NFS, SQL hu b m t phiên làm vi c Session Transport Layer Network Layer Data Link Physical - Application layer : ñây là l p cao nh t trong mô hình. Nó là nơi mà ngư i s d ng ho c k t n i các chương trình ng d ng v i các th t c cho phép truy nh p vào m ng. - Presentation layer : L p presentation cung c p các mã và ch c năng ñ chuy n ñ i mà ñư c cung c p b i l p ng d ng. Các ch c năng ñó ñ m b o r ng d li u t l p ng d ng trong m t h th ng có th ñư c ñ c b i l p ng d ng c a m t h th ng khác. VD : dùng ñ mã hoá d li u t l p ng d ng : như mã hoá nh jpeg , gif. Mã ñó cho phép ta có th hi n lên trang web . - Session layer : ñư c s d ng ñ thi t l p, duy trì và k t thúc phiên làm vi c gi a các l p presentation. Vi c trao ñ i thông tin l p này bao g m yêu c u d ch v và ñáp ng yêu c u c a các ng d ng trên thi t b khác. Các l p dư i. 4 l p dư i c a mô hình OSI s d ng ñ ñ nh nghĩa làm th nào ñ d li u ñư c truy n ñi trong các dây n i v t lý, các thi t b m ng và ñi ñ n tr m ñ u cu i cu i cùng là ñ n các l p ng d ng. Qu n sách này ta ch quan tâm ñ n 4 l p cu i. Và s xem xét t ng l p m t cách chi ti t giao thi p gi a các l p trong mô hình OSI: S d ng phương pháp protocal stack ñ k t n i gi a hai thi t b trong m ng. Protocal stack là m t t p h p các quy ñ nh dùng ñ ñ nh nghĩa làm th nào ñ d li u truy n qua m ng. Ví d v i : TCP/IP m i Layer cho phép d li u truy n qua. Các l p ñó trao ñ i các thông tin ñ cung c p cu c liên l c gi a hai thi t b trong m ng. Các l p giao ti p v i nhau s d ng Protocal Data Unit (PDU). Thông tin ñi u khi n c a PDU ñư c thêm 4
  5. vào v i d li u l p trên. Và thông tin ñi u khi n này n m trong trư ng g i là trư ng header và trailer. Hình 1-3 Data encapsulation Application Presentation Upper Layer Data Session TCP Header Upper Layer Data Transport Segment IP Header Data Network Packet LLC Header Data FCS Data Link Frame MAC Header Data FCS Physical Bits 0101110101001000010 1.2. H giao th c TCP/IP Các t ng c a giao th c TCP/IP so v i c c t ng c a mô hình OSI Application: Xác nh n quy n, nén d li u và các d ch v cho ngư i dùng Transport: X lý d li u gi a các h th ng va cung c p vi c truy c p m ng cho các ng d ng Network: Tìm ñư ng cho các packet 5
  6. Link: M c OS ho c các thi t b giao ti p m ng trên m t máy tính M t s ñi m khác nhau c a TCP/IP và mô hình OSI + L p ng d ng trong TCP/IP x lý ch c năng c a l p 5,6,7 trong mô hình OSI + L p transport trong TCP/IP cung c p c ch UDP truy n không tin c y, transport trong OSI luôn ñ m b o truy n tin c y + TCP/IP là m t t p c a các protocols (m t b giao th c) + TCP/IP xây d ng trư c OSI Quy trình ñóng gói d li u trong mô hình TCP/IP như sau: 1.3. So sánh gi a hai giao th c TCP và UDP 6
  7. 1.4. C ng giao th c Là m t s năm trong kho ng 1..65535 dùng ñ phân bi t gi a 2 ng d ng m ng v i nhau g n v i ñ a ch IP và Socket M t s c ng và các giao th c thông d ng: + FTP: 21 + Telnet: 23 + SMTP: 25 + POP3: 110 + HTTP:80 1.5. ð a ch IP, các ñ a ch IP dành riêng 0123 4 8 16 24 Class A 0 Netid Hostid Class B 10 Netid Hostid Class C 110 Netid Hostid Class D 1110 Multicast address Class E 1111 0 Reverved Reverved for future use 7
  8. 1.6. ð a ch tên mi n: lo i A, lo i MX.. 1.7. M t s giao th c t ng ng d ng: HTTP, SMTP, POP3, FTP... - Chúng ta s nghiên c u chi ti t các giao th c này chương 3 8
  9. CHƯƠNG 2: L P TRÌNH M NG TRONG .NET FRAMEWORK 2.1. Socket hư ng k t n i (TCP Socket) Socket là m t giao di n l p trình ng d ng (API) m ng Thông qua giao di n này chúng ta có th l p trình ñi u khi n vi c truy n thông gi a hai máy s d ng các giao th c m c th p là TCP, UDP… Socket là s tr u tư ng hoá m c cao, có th tư ng tư ng nó như là thi t b truy n thông hai chi u g i – nh n d li u gi a hai máy tính v i nhau. Các lo i Socket Socket hư ng k t n i (TCP Socket) Socket không hư ng k t n i (UDP Socket) Raw Socket ð c ñi m c a Socket hư ng k t n i Có 1 ñư ng k t n i o gi a 2 ti n trình M t trong 2 ti n trình ph i ñ i ti n trình kia yêu c u k t n i. Có th s d ng ñ liên l c theo mô hình Client/Server Trong mô hình Client/Server thì Server l ng nghe và ch p nh n m t yêu c uk tn i M i thông ñi p g i ñ u có xác nh n tr v Các gói tin chuy n ñi tu n t ð c ñi m c a Socket không hư ng k t n i Hai ti n trình liên l c v i nhau không k t n i tr c ti p Thông ñi p g i ñi ph i kèm theo ñ a ch c a ngư i nh n Thông ñi p có th g i nhi u l n Ngư i g i không ch c ch n thông ñi p t i tay ngư i nh n Thông ñi p g i sau có th ñ n ñích trư c thông ñi p g i trư c ñó. S hi u c ng c a Socket 9
  10. ð có th th c hi n các cu c giao ti p, m t trong hai quá trình ph i công b s hi u c ng c a socket mà mình s d ng. M i c ng giao ti p th hi n m t ñ a ch xác ñ nh trong h th ng. Khi quá trình ñư c gán m t s hi u c ng, nó có th nh n d li u g i ñ n c ng này t các quá trình khác. Quá trình còn l i cũng yêu c u t o ra m t socket. 2.1.1. Gi i thi u v NameSpace System.Net và System.Net.Sockets Cung c p m t giao di n l p trình ñơn gi n cho r t nhi u các giao th c m ng. Có r t nhi u l p ñ l p trình Ta quan tâm l p IPAdress, IPEndPoint, DNS, … L p IPAdress M t s Field c n chú ý: Any: Cung c p m t ñ a ch IP ñ ch ra r ng Server ph i l ng nghe trên t t c các Card m ng Broadcast: Cung c p m t ñ a ch IP qu ng bá Loopback: Tr v m t ñ a ch IP l p AdressFamily: Tr v h ñ a ch c a IP hi n hành L p IPAddress M t s phương th c c n chú ý: Phương th c kh i t o IPAddress(Byte[]) IPAddress(Int64) IsLoopback: Cho bi t ñ a ch có ph i ñ a ch l p không Parse: Chuy n IP d ng xâu v IP chu n ToString: Tr ñ a ch IP v d ng xâu TryParse: Ki m tra IP d ng xâu có h p l không? L p IPEndPoint M t s phương th c c n chú ý: Phương th c kh i t o IPEndPoint (Int64, Int32) IPEndPoint (IPAddress, Int32) Create: T o m t EndPoint t m t ñ a ch Socket ToString : Tr v ñ a ch IP và s hi u c ng theo khuôn d ng ð aCh : C ng, ví d : 192.168.1.1:8080 L p DNS M t s thành ph n c a l p: HostName: Cho bi t tên c a máy ñư c phân gi i GetHostAddress: Tr v t t c IP c a m t tr m GetHostEntry: Gi i ñáp tên ho c ñ a ch truy n vào và tr v ñ i tư ng IPHostEntry 10
  11. GetHostName: L y v tên c a máy tính c c b NameSpace System.Net.Sockets M t s l p hay dùng: TcpClient, UdpClient, TcpListener, Socket, NetworkStream, … ð t o ra Socket Socket(AddressFamily af, SocketType st, ProtocolType pt) SocketType Protocoltype Description Dgram Udp Connectionless communication Stream Tcp Connection-oriented communication Raw Icmp Internet Control Message Protocol Raw Raw Plain IP packet communication using System.Net; using System.Net.Sockets; class SockProp { public static void Main() { IPAddress ia = IPAddress.Parse("127.0.0.1"); IPEndPoint ie = new IPEndPoint(ia, 8000); Socket test = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); Console.WriteLine("AddressFamily: {0}", test.AddressFamily); Console.WriteLine("SocketType: {0}", test.SocketType); Console.WriteLine("ProtocolType: {0}", test.ProtocolType); Console.WriteLine("Blocking: {0}", test.Blocking); test.Blocking = false; Console.WriteLine("new Blocking: {0}", test.Blocking); Console.WriteLine("Connected: {0}", test.Connected); test.Bind(ie); IPEndPoint iep = (IPEndPoint)test.LocalEndPoint; Console.WriteLine("Local EndPoint: {0}", iep.ToString()); test.Close(); Console.ReadKey(); } } 2.1.2. Vi t chương trình cho phía máy ch Vi t chương trình cho phía máy ch T o m t Socket Liên k t v i m t IPEndPoint c c b L ng nghe k t n i Ch p nh n k t n i G i nh n d li u theo giao th c ñã thi t k 11
  12. ðóng k t n i sau khi ñã hoàn thành và tr l i tr ng thái l ng nghe ch k tn im i Vi t chương trình cho phía máy ch IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 9050); Socket newsock = Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); newsock.Bind(ipep); newsock.Listen(10); Socket client = newsock.Accept(); //G i nh n d li u theo giao th c ñã thi t k ………. newsock.Close(); Chương trình Server: using System; using System.Collections.Generic; using System.Text; using System.Net; using System.Net.Sockets; class Server{ static void Main(string[] args) { IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 2008); Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); server.Bind(iep); server.Listen(10); Console.WriteLine("Cho ket noi tu client"); Socket client = server.Accept(); Console.WriteLine("Chap nhan ket noi tu:{0}", client.RemoteEndPoint.ToString()); string s = "Chao ban den voi Server"; //Chuyen chuoi s thanh mang byte byte[] data = new byte[1024]; data = Encoding.ASCII.GetBytes(s); //gui nhan du lieu theo giao thuc da thiet ke client.Send(data,data.Length,SocketFlags.None); while (true) { data = new byte[1024]; int recv = client.Receive(data); if (recv == 0) break; //Chuyen mang byte Data thanh chuoi va in ra man hinh s = Encoding.ASCII.GetString(data, 0, recv); Console.WriteLine("Clien gui len:{0}", s); //Neu chuoi nhan duoc la Quit thi thoat if (s.ToUpper().Equals("QUIT")) break; //Gui tra lai cho client chuoi s s = s.ToUpper(); data = new byte[1024]; 12
  13. data = Encoding.ASCII.GetBytes(s); client.Send(data, data.Length, SocketFlags.None); } client.Shutdown(SocketShutdown.Both); client.Close(); server.Close(); } } 2.1.3. Vi t chương trình cho phía máy khách Vi t chương trình cho phía máy khách Xác ñ nh ñ a ch c a Server T o Socket K t n i ñ n Server G i nh n d li u theo giao th c ñã thi t k ðóng Socket Vi t chương trình cho phía máy khách IPEndPoint ipep = new IPEndPoint(Ipaddress.Parse("192.168.1.6"), 9050); Socket server = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp); server.Connect(ipep); Chương trình Client: using System; using System.Collections.Generic; using System.Text; using System.Net; using System.Net.Sockets; class Client { static void Main(string[] args) { IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 2008); Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); client.Connect(iep); byte[] data = new byte[1024]; int recv = client.Receive(data); string s = Encoding.ASCII.GetString(data, 0, recv); Console.WriteLine("Server gui:{0}", s); string input; while (true) { input = Console.ReadLine(); //Chuyen input thanh mang byte gui len cho server data = new byte[1024]; data = Encoding.ASCII.GetBytes(input); client.Send(data, data.Length, SocketFlags.None); if (input.ToUpper().Equals("QUIT")) break; data = new byte[1024]; recv = client.Receive(data); 13
  14. s = Encoding.ASCII.GetString(data, 0, recv); Console.WriteLine("Server gui:{0}", s); } client.Disconnect(true); client.Close(); } } 2.1.4. S d ng các lu ng nh p xu t v i Socket T Socket ta có th t o ra lu ng ñ nh p xu t v i Socket ñó là s d ng l p NetworkStream Property Description CanRead Is true if the NetworkStream supports reading CanSeek Is always false for NetworkStreams CanWrite Is true if the NetworkStream supports writing DataAvailable Is true if there is data available to be read Ví d chương trình Client/Server s d ng NetworkStream ñ g i và nh n d li u Chương trình Client s d ng NetworkStream: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Net.Sockets; 14
  15. class Program { static void Main(string[] args) { IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 2009); Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); client.Connect(iep); NetworkStream ns = new NetworkStream(client); byte[] data = new byte[1024]; while (true) { string input = Console.ReadLine(); data = Encoding.ASCII.GetBytes(input); ns.Write(data, 0, data.Length); if (input.ToUpper().Equals("QUIT")) break; data = new byte[1024]; int rec = ns.Read(data, 0, data.Length); string s = Encoding.ASCII.GetString(data, 0, rec); Console.WriteLine(s); } client.Close(); } } Chương trình Server s d ng NetworkStream: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Net.Sockets; class Program { static void Main(string[] args) { IPEndPoint iep=new IPEndPoint(IPAddress.Parse("127.0.0.1"),2009); Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); server.Bind(iep); server.Listen(10); Socket client = server.Accept(); byte[] data; NetworkStream ns = new NetworkStream(client); while (true) { data = new byte[1024]; int rec = ns.Read(data, 0, data.Length); string s = Encoding.ASCII.GetString(data, 0, rec); Console.WriteLine(s); data = new byte[1024]; s = s.ToUpper(); if (s.Equals("QUIT")) break; data = Encoding.ASCII.GetBytes(s); ns.Write(data, 0, data.Length); } 15
  16. client.Close(); server.Close(); } } Trên c s c a NetworkStream ta có th n i thêm các lu ng ñ nh p xu t theo hư ng ký t như StreamReader, StreamWriter Sau ñây là m t ví d v chương trình Client/Server s d ng lu ng nh p xu t, chương trình Server chép phép Client g i lên yêu c u, n u yêu c u là GetDate không phân bi t ch hoa ch thư ng thì Server tr v cho Client ngày hi n t i, n u yêu c u là GetTime không phan bi t hoa thư ng thì Server tr v gi hi n t i, n u là Quit thì Server ng t k t n i v i Client, không ph i các trư ng h p trên thì thông báo không hi u lênh. Chương trình phía Client: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Net.Sockets; using System.IO; using System.Threading; class DateTimeClient { static void Main(string[] args) { IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9999); Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); client.Connect(iep); NetworkStream ns = new NetworkStream(client); StreamReader sr = new StreamReader(ns); StreamWriter sw = new StreamWriter(ns); while (true) { string input = Console.ReadLine(); sw.WriteLine(input); sw.Flush(); if (input.ToUpper().Equals("QUIT")) break; string kq = sr.ReadLine(); Console.WriteLine(kq); } sr.Close(); sw.Close(); ns.Close(); client.Close(); } } Chương trình phía Server: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; 16
  17. using System.Net.Sockets; using System.IO; class DateTimeServer{ static void Main(string[] args) { IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 2009); Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); server.Bind(iep); server.Listen(10); Socket client = server.Accept(); NetworkStream ns = new NetworkStream(client); StreamReader sr = new StreamReader(ns StreamWriter sw = new StreamWriter(ns); string kq=""; while (true) { string s = sr.ReadLine(); s=s.ToUpper(); if (s.Equals("QUIT")) break; if (s.Equals("GETDATE")) kq = DateTime.Now.ToString("dd/MM/yyyy"); else if (s.Equals("GETTIME")) kq = DateTime.Now.ToString("hh:mm:ss"); else kq = "Khong hieu lenh"; sw.WriteLine(kq); sw.Flush(); } sr.Close(); sw.Close(); client.Close(); } } 2.2. Socket không hư ng k t n i (UDP Socket) Chương trình phía máy ch T o m t Socket Liên k t v i m t IPEndPoint c c b G i nh n d li u theo giao th c ñã thi t k ðóng Socket Chương trình phía máy khách Xác ñ nh ñ a ch Server T o Socket G i nh n d li u theo giao th c ñã thi t k ðóng Socket 2.2.1. Vi t chương trình cho phía máy ch using System; 17
  18. using System.Collections.Generic; using System.Text; using System.Net; using System.Net.Sockets; class Program { static void Main(string[] args) { IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 2008); Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); server.Bind(iep); //tao ra mot Endpot tu xa de nhan du lieu ve IPEndPoint RemoteEp = new IPEndPoint(IPAddress.Any, 0); EndPoint remote=(EndPoint)RemoteEp; byte[] data = new byte[1024]; int recv = server.ReceiveFrom(data, ref remote); string s = Encoding.ASCII.GetString(data, 0, recv); Console.WriteLine("nhan ve tu Client:{0}", s); data = Encoding.ASCII.GetBytes("Chao client"); server.SendTo(data, remote); while (true) { data=new byte[1024]; recv = server.ReceiveFrom(data, ref remote); s = Encoding.ASCII.GetString(data, 0, recv); if (s.ToUpper().Equals("QUIT")) break; Console.WriteLine(s); data=new byte[1024]; data=Encoding.ASCII.GetBytes(s); server.SendTo(data,0,data.Length,SocketFlags.None,remote); } server.Close(); } } 2.2.2. Vi t chương trình cho phía máy khách using System; using System.Collections.Generic; using System.Text; using System.Net; using System.Net.Sockets; class Program { static void Main(string[] args) { IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 2008); Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); String s = "Chao server"; byte[] data = new byte[1024]; data = Encoding.ASCII.GetBytes(s); client.SendTo(data, iep); EndPoint remote = (EndPoint)iep; 18
  19. data = new byte[1024]; int recv = client.ReceiveFrom(data, ref remote); s = Encoding.ASCII.GetString(data, 0, recv); Console.WriteLine("Nhan ve tu Server{0}",s); while (true) { s = Console.ReadLine(); data=new byte[1024]; data = Encoding.ASCII.GetBytes(s); client.SendTo(data, remote); if (s.ToUpper().Equals("QUIT")) break; data = new byte[1024]; recv = client.ReceiveFrom(data, ref remote); s = Encoding.ASCII.GetString(data, 0, recv); Console.WriteLine(s); } client.Close(); } } S d ng Socket không hư ng k t n i vi t chương trình chat giưa 2 máy như sau: (Sau này chúng ta có th s d ng l p UdpClient) using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Net; using System.Net.Sockets; using System.Threading; public partial class Form1 : Form { private Socket udp1; private IPEndPoint ipremote, iplocal; public Form1() { InitializeComponent(); CheckForIllegalCrossThreadCalls = false; } private void btStart_Click(object sender, EventArgs e) { udp1 = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); iplocal = new IPEndPoint(IPAddress.Parse("127.0.0.1"), int.Parse(txtLocalPort.Text)); udp1.Bind(iplocal); ipremote = new IPEndPoint(IPAddress.Parse(txtIp.Text), int.Parse(txtRemotePort.Text)); Thread tuyen = new Thread(new ThreadStart(NhanDL)); tuyen.Start(); 19
  20. } private void btSend_Click(object sender, EventArgs e) { byte[] data = new byte[1024]; data = Encoding.ASCII.GetBytes(txtSend.Text); udp1.SendTo(data, ipremote); } private void NhanDL() { while (true) { byte[] data = new byte[1024]; IPEndPoint ipe = new IPEndPoint(IPAddress.Any, 0); EndPoint remote = (EndPoint)ipe; int rec = udp1.ReceiveFrom(data, ref remote); string s = Encoding.ASCII.GetString(data, 0, rec); txtNoidung.Text += s + "\r\n"; } } private void button1_Click(object sender, EventArgs e) { MessageBox.Show(txtSend.Text.Substring(0, txtSend.Text.IndexOf(" "))); } } 2.2.3. S d ng l p System.IO.MemoryStream ñ t o vùng ñ m nh p xu t 2.3. S d ng các l p h tr ñư c xây d ng t l p Soket 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2