Jump to content
Xtreme .Net Talk

Recommended Posts

Posted

Hi

 

I'm trying to convert a VB6 project to .Net. This worked to some extent, however it didnt convert winsock to sockets. I've tried rewriting the sockets side of things, but i have no experience in this area.

 

  Private Sub btnMyCode_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMyCode.Click

       Dim strMessage As String = ""
       Dim strEsc As String = Chr(&H1BS) 'Holds Escape ASCII Character
       sHeader = Chr(&H99S)
       sNumMessage = Chr(&H1S)
       sNumDestination = Chr(&H1S)
       sNumSigns = Chr(&H1S)
       sMessHigh = Chr(0)

       Call writedebug("Trying to Connect..." + sMessLow + "...")

       sMessText1 = strEsc & "[2J" & strEsc & "[1;1H" & sForeColorStr & Me.txtLine.Text


       sMessLow = Chr(Len(Trim(sMessText1)) + Len(Trim(sMessText2)))

       'build message for transmission
       sMessage = sHeader & sNumMessage & sNumDestination & sNumSigns & sMessLow & sMessHigh ' this is the message header stuff
       sMessage = sMessage & sMessText1  'add text for top line ' & sEsc & "[4x"
       sMessage = sMessage & sMessText2 ' add text for second line

       bytChecksum = 0
       ' update checksum using each byte of the message
       For i As Integer = 1 To Len(sMessage)
           bytChecksum = RotateLeft(bytChecksum)
           bytChecksum = bytChecksum Xor Asc(Mid(sMessage, i, 1))
       Next
       ' do one further rotation
       bytChecksum = RotateLeft(bytChecksum)
       ' and append the checksum to the message
       sMessage = sMessage & Chr(bytChecksum)

       'Connect to Socket using WinSock
       ' this boolean (bSocketInIse) is very important - you must not
       ' open a socket to the sign if there is already one open
       If bSocketInUse = False Then
           bSocketInUse = True
           ' we use a timer to close the socket if it fires - this is a safety measure in
           ' case something goes wrong
           Timer1.Interval = 10000
           Timer1.Enabled = True
           'Set Protocol and Sign Information
           'And Connect to socket.

           With Me.Winsock1
               .Protocol = MSWinsockLib.ProtocolConstants.sckTCPProtocol
               ' ip address of sign
               .RemoteHost = "172.28.48.150"
               ' port number sign listens on
               .RemotePort = CInt("3500")
               .Connect()
           End With
       Else
           Call writedebug("Socket In Use Please Wait.")
       End If

   End Sub

  Private Sub frmMain_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
       'set escape string
       sEsc = Chr(&H1BS)

       bSocketInUse = False
       ' initialise to red text on black background
       sForeColorStr = Chr(27) & "[31;40m"

   End Sub

   Private Sub Form_Terminate_Renamed() ' ensure winsock is close when application terminated
       If Me.Winsock1.CtlState > 0 Then Me.Winsock1.Close()
   End Sub

   Private Sub Timer1_Tick(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Timer1.Tick
       'if timer fires display timeout message and disconnect
       Timer1.Enabled = False
       Call writedebug("Display Timed Out")
       Me.Winsock1.Close()
       Call writedebug("Socket Disconnected.")
       bSocketInUse = False
   End Sub

   Private Sub writedebug(ByRef sText As String)
       Me.txtDebug.Text = Me.txtDebug.Text & sText & Environment.NewLine
   End Sub

   Private Sub Winsock1_CloseEvent(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Winsock1.CloseEvent ' Fires this event when sign closes socket
       Call writedebug("Socket Disconnected")
       Call writedebug("")
       bSocketInUse = False
       Me.Timer1.Enabled = False
       Me.Winsock1.Close()
   End Sub

   Private Sub Winsock1_ConnectEvent(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Winsock1.ConnectEvent ' Fired once winsock connects
       Call writedebug("Connected")
       With Me.Winsock1
           ' send the message to the sign
           .SendData(sMessage)
       End With
       Call writedebug("Data Sent")
   End Sub

   Private Sub Winsock1_Error(ByVal eventSender As System.Object, ByVal eventArgs As AxMSWinsockLib.DMSWinsockControlEvents_ErrorEvent) Handles Winsock1.Error
       ' this is an error event produced bu VB's Winsock
       'display error
       Call writedebug("Socket Wrench Error: " & eventArgs.number)
       'close socket
       Me.Winsock1.Close()
   End Sub

   Function RotateLeft(ByVal Octet As Short) As Byte
       ' used in calculation of checksum
       Octet = Octet * 2
       If Octet > &HFFS Then
           Octet = Octet - &HFFS
       End If
       RotateLeft = CByte(Octet)

   End Function

 

 

Can anyone help me convert this into using system.net.sockets please? I've been trying it, for a few days. For some reason all the examples i get form the web just dont seem to work.

 

Thanks

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...