Wrox Programmer Forums
Go Back   Wrox Programmer Forums > .NET > .NET 1.0 and Visual Studio.NET > VS.NET 2002/2003
VS.NET 2002/2003 Discussions about the Visual Studio.NET programming environment, the 2002 (1.0) and 2003 (1.1). ** Please don't post code questions here ** For issues specific to a particular language in .NET, please see the other forum categories.
Welcome to the p2p.wrox.com Forums.

You are currently viewing the VS.NET 2002/2003 section of the Wrox Programmer to Programmer discussions. This is a community of software programmers and website developers including Wrox book authors and readers. New member registration was closed in 2019. New posts were shut off and the site was archived into this static format as of October 1, 2020. If you require technical support for a Wrox book please contact http://hub.wiley.com
Old July 15th, 2003, 01:09 AM
Registered User
Join Date: Jun 2003
Posts: 3
Thanks: 0
Thanked 0 Times in 0 Posts
Send a message via Yahoo to rbharatha
Default Socket Programming in Window Service

Hi Folks,

I got program, which I want to run in a windows Service environment and need an Installer inbuilt. I need to implement even Read & Write data from Client to Server in a buffer, which i have to insert into database.

I have a sample program accessing the client Machine from the server.
I 'd appreciate any tips or solution in this regard

thanks in advance


'This is a server program
Imports System
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Imports System.Threading

' State object for reading client data asynchronously
Public Class StateObject
    ' Client socket.
    Public workSocket As Socket = Nothing
    ' Size of receive buffer.
    Public Const BufferSize As Integer = 1024
    ' Receive buffer.
    Public buffer(BufferSize) As Byte
    ' Received data string.
    Public sb As New StringBuilder()
End Class 'StateObject

Public Class AsynchronousSocketListener

    ' Incoming data from the client.
    Public Shared data As String = Nothing

    ' Thread signal.
    Public Shared allDone As New ManualResetEvent(False)

    Public Sub New()
    End Sub 'New

    Public Shared Sub StartListening()
        ' Data buffer for incoming data.
        Dim bytes() As Byte = New [Byte](1024) {}

        ' Establish the local endpoint for the socket.
        ' The DNS name of the computer
        ' running the listener is "host.contoso.com".
        Dim ipHostInfo As IPHostEntry = Dns.Resolve(Dns.GetHostName())
        Dim ipAddress As IPAddress = ipHostInfo.AddressList(0)
        Dim localEndPoint As New IPEndPoint(ipAddress, 11000)

        ' Intializes a TCP/IP socket.
        Dim listener As New Socket(AddressFamily.InterNetwork, _
            SocketType.Stream, ProtocolType.Tcp)

        ' Bind the socket to the local endpoint and listen for incoming
        ' connections.

            While True
                ' Set the event to nonsignaled state.

                ' Start an asynchronous socket to listen for connections.
                Console.WriteLine("Waiting for a connection...")
                listener.BeginAccept(New AsyncCallback(AddressOf AcceptCallback), _

                ' Wait until a connection is made before continuing.
            End While

        Catch e As Exception
        End Try

        Console.WriteLine(ControlChars.Cr + "Press ENTER to continue...")
    End Sub 'StartListening

    Public Shared Sub AcceptCallback(ar As IAsyncResult)
        ' Signal the main thread to continue.

        ' Get the socket that handles the client request.
        Dim listener As Socket = CType(ar.AsyncState, Socket)
        Dim handler As Socket = listener.EndAccept(ar)

        ' Create the state object.
        Dim state As New StateObject()
        state.workSocket = handler
        handler.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, _
            New AsyncCallback(AddressOf ReadCallback), state)
    End Sub 'AcceptCallback

    Public Shared Sub ReadCallback(ar As IAsyncResult)
        Dim content As [String] = [String].Empty

        ' Retrieve the state object and the handler socket
        ' from the asynchronous state object.
        Dim state As StateObject = CType(ar.AsyncState, StateObject)
        Dim handler As Socket = state.workSocket

        ' Read data from client socket.
        Dim bytesRead As Integer = handler.EndReceive(ar)

        If bytesRead > 0 Then
            ' There might be more data, so store the data received so far.
            state.sb.Append(Encoding.ASCII.GetString(state.buf fer, 0, _

            ' Check for end-of-file tag. If it is not there, read
            ' more data.
            content = state.sb.ToString()
            If content.IndexOf("<EOF>") > - 1 Then
                ' All the data has been read from the
                ' client. Display it on the console.
                Console.WriteLine("Read {0} bytes from socket. " + _
                    ControlChars.Cr + " Data : {1}", content.Length, content)
                ' Echo the data back to the client.
                Send(handler, content)
                ' Not all data received. Get more.
                handler.BeginReceive(state.buffer, 0,StateObject.BufferSize, _
                    0, New AsyncCallback(AddressOf ReadCallback), state)
            End If
        End If
    End Sub 'ReadCallback

    Private Shared Sub Send(handler As Socket, data As [String])
        ' Convert the string data to byte data using ASCII encoding.
        Dim byteData As Byte() = Encoding.ASCII.GetBytes(data)

        ' Begin sending the data to the remote device.
        handler.BeginSend(byteData, 0, byteData.Length, 0, _
            New AsyncCallback(AddressOf SendCallback), handler)
    End Sub 'Send

    Private Shared Sub SendCallback(ar As IAsyncResult)
            ' Retrieve the socket from the state object.
            Dim handler As Socket = CType(ar.AsyncState, Socket)

            ' Complete sending the data to the remote device.
            Dim bytesSent As Integer = handler.EndSend(ar)
            Console.WriteLine("Sent {0} bytes to client.", bytesSent)


        Catch e As Exception
        End Try
    End Sub 'SendCallback

    'Entry point that delegates to C-style main Private Function.
    Public Overloads Shared Sub Main()
        System.Environment.ExitCode = _
    End Sub

    Overloads Public Shared Function Main(args() As [String]) As Integer
        Return 0
    End Function 'Main
End Class 'AsynchronousSocketListener

Ramesh Bharatha

Similar Threads
Thread Thread Starter Forum Replies Last Post
Socket Programming lisamargaret C# 1 December 18th, 2007 10:20 AM
GUI Socket Programming Ewura BOOK: Beginning Java 2 0 November 11th, 2006 12:41 PM
Socket Programming ashu_from_india General .NET 0 June 28th, 2005 12:02 PM
Socket programming vinodkalpaka J2EE 0 June 16th, 2005 02:43 AM
Socket Programming chinni Pro PHP 1 August 18th, 2003 03:59 PM

Powered by vBulletin®
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Copyright (c) 2020 John Wiley & Sons, Inc.