1 / 22

Network Programming

Network Programming. Advanced Computer Programming. Client/Server Application. Lecture Objective. After completing this Lecture: Students will be able to understand how Client/Server Applications are built Understanding Ports Understand how Socket Programming is done

Download Presentation

Network Programming

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Network Programming Advanced Computer Programming Client/Server Application

  2. Lecture Objective • After completing this Lecture: • Students will be able to understand how Client/Server Applications are built • Understanding Ports • Understand how Socket Programming is done • Creating Console Application for showing debug messages • Sending and Receiving Message Streams using TCP Protocol

  3. Creating Server Console Application

  4. Creating Server Console Application

  5. Creating Server Console Application

  6. Creating Server Console Application

  7. Creating Server Console Application

  8. Running Server Console Application

  9. Creating Client Console Application

  10. Creating Client Console Application

  11. Creating Client Console Application

  12. Creating Client Console Application

  13. Creating Client Console Application

  14. Running Client Console Application

  15. Running Client Console Application

  16. Running Server Console Application

  17. VB.NET TCP Client - Server Socket Communication • Here's a sample TCP Client and associated server "listener" to illustrate how easy socket programming has become in .NET. • We are keeping this synchronous and very basic; the idea is that a client accepts an input message, makes a connection to the listener on a specific address and port, sends the message, and retrieves the response. • The sockets are then closed. • These are console apps so you can easily see what's going back and forth, but it is trivial to compile the client code into a class library to allow multithreaded socket messaging, assuming that a listener exists that is equipped to handle the incoming requests correctly without serializing them. • Typically a server - listener of this type would listen on a single port but spin off separate sockets for each received message that comes in. • First, lets look at the code for a client:

  18. Client Code • Imports System.Net.Sockets • Imports System.Text • Module Module1 • Sub Main() • Dim tcpClient As New System.Net.Sockets.TcpClient() • tcpClient.Connect("127.0.0.1", 8000) • Dim networkStream As NetworkStream = tcpClient.GetStream() • If networkStream.CanWrite And networkStream.CanRead Then • ' Do a simple write. • Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes("Is anybody there") • networkStream.Write(sendBytes, 0, sendBytes.Length) • ' Read the NetworkStream into a byte buffer. • Dim bytes(tcpClient.ReceiveBufferSize) As Byte • networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize)) • ' Output the data received from the host to the console. • Dim returndata As String = Encoding.ASCII.GetString(bytes) • Console.WriteLine(("Host returned: " + returndata)) • Else • If Not networkStream.CanRead Then • Console.WriteLine("cannot not read data to this stream") • tcpClient.Close() • Else • If Not networkStream.CanWrite Then • Console.WriteLine("cannot write data from this stream") • tcpClient.Close() • End If • End If • End If • ' pause so user can view the console output • Console.ReadLine() • End Sub • End Module

  19. VB.NET TCP Client - Server Socket Communication • Here we are creating a new TcpClient, calling its Connect method, and then getting access to its underlying NetworkStream via the GetStream() method. • We Write our message into the stream (converted to a byte array first) and then Read the response from the server. • When done, we close the socket. • Now lets take a look at the server side:

  20. Server Code • Imports System.Net.Sockets • Imports System.Text • Module Module1 • Sub Main() • ' Must listen on correct port- must be same as port client wants to connect on. • Const portNumber As Integer = 8000 • Dim tcpListener As New TcpListener(portNumber) • tcpListener.Start() • Console.WriteLine("Waiting for connection...") • Try • 'Accept the pending client connection and return an initializedTcpClient. • Dim tcpClient As TcpClient = tcpListener.AcceptTcpClient() • Console.WriteLine("Connection accepted.") • ' Get the stream • Dim networkStream As NetworkStream = tcpClient.GetStream() • ' Read the stream into a byte array • Dim bytes(tcpClient.ReceiveBufferSize) As Byte • networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize)) • ' Return the data received from the client to the console. • Dim clientdata As String = Encoding.ASCII.GetString(bytes) • Console.WriteLine(("Client sent: " + clientdata)) • Dim responseString As String = "Connected to server." • Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes(responseString) • networkStream.Write(sendBytes, 0, sendBytes.Length) • Console.WriteLine(("Message Sent /> : " + responseString)) • 'Any communication with the remote client using the TcpClient can go here. • 'Close TcpListener and TcpClient. • tcpClient.Close() • tcpListener.Stop() • Console.WriteLine("exit") • Console.ReadLine() • Catch e As Exception • Console.WriteLine(e.ToString()) • Console.ReadLine() • End Try • End Sub • End Module

  21. VB.NET TCP Client - Server Socket Communication • As it can be seen, that the server creates a new instance of the TcpListener class on the port, and calls the Start() method. • It then calls the AcceptTcpClient() method which returns a TcpClient that you can use to send and receive data. • Use TcpClient.GetStream to obtain the underlying NetworkStream of the TcpClient. • NetworkStream inherits from Stream, which provides a rich collection of methods and properties for network communications. • We do a Read to get the sent data, and we can also call networkStream.Write() to send back a response. • That's pretty much it for sending data over TCP sockets in .NET! Its easy, simple, and very extensible. • You can download the VB.NET solution with projects for both the Client and the Server (listener) at the CMS website.

  22. The End Questions?

More Related