Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałTekla Gazda Został zmieniony 11 lat temu
1
Aplikacje sieciowe Obiekty typu Socket
2
ServerSocket ClientSocket Socket ClientSocket Socket
3
Socket gniazdo = new Socket(nazwa hosta, nr portu ); gniazdo.getInputStream() gniazdo.getOutputStream() Gniazdo.close() Porty 1 – 1024 zarezerwowane są na usługi systemowe !! (Assigned Numbers Authority) Można używać dla swoich celów portów o numerach większych niż 1024 i mniejszych od 65535. Niektóre wyższe numery portów są wykorzystywane-> www.sockets.com/services.htm ServerSocket gniazdoS = new ServerSocket(port); Socket gniazdo = gniazdoS.accept(); gniazdoS.close();
4
Obiekt Socket na platformie.NET Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
5
Socket w aplikacji klienta private Socket clientSocket;... clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); } clientSocket.Connect("localhost", 1000); byte[] buffer = new byte[200]; buffer = Encoding.ASCII.GetBytes(UserName = R2D2"); clientSocket.Send(buffer);
6
Implementacja Serwera Socket serverSocket; Socket handler; serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName()); IPAddress ipAddress = ipHostInfo.AddressList[0]; IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 1000); serverSocket.Bind(localEndPoint); serverSocket.Listen(10);... handler = serverSocket.Accept();... byte[] buffer= new byte[200]; bytesRead = handler.Receive(buffer);
7
Asynchroniczny Socket public class StateObject { public Socket socket; public byte[] buffer = new byte[1024]; }.... Socket socket;... StateObject stateObject = new StateObject(); socket.BeginReceive(stateObject.buffer, 0, stateObject.buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveData), stateObject);
8
Akceptacja połączenia public void AcceptUser(IAsyncResult ar) { Socket listener = (Socket)ar.AsyncState; Socket handler = listener.EndAccept(ar); } Form.CheckForIllegalCrossThreadCalls = false; serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName()); IPAddress ipAddress = ipHostInfo.AddressList[0]; IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 1000); serverSocket.Bind(localEndPoint); serverSocket.Listen(10); serverSocket.BeginAccept(new AsyncCallback(AcceptUser),serverSocket);
9
Odbiór danych public void ReceiveData(IAsyncResult result) { StateObject state=(StateObject) result.AsyncState; Socket s = state.socket; int bytesRead=s.EndReceive(result); if (bytesRead > 0) { DisplayTextBox.AppendText( Encoding.ASCII.GetString(state.buffer,0,bytesRead) + "\n"); s.BeginReceive(state.buffer, 0, state.buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveData), state); } else { DisplayTextBox.AppendText("Koniec transmisji\n"); } }
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.