Hi
Im trying to convert a VB6 project to .Net. This worked to some extent, however it didnt convert winsock to sockets. Ive tried rewriting the sockets side of things, but i have no experience in this area.
Can anyone help me convert this into using system.net.sockets please? Ive been trying it, for a few days. For some reason all the examples i get form the web just dont seem to work.
Thanks
Im trying to convert a VB6 project to .Net. This worked to some extent, however it didnt convert winsock to sockets. Ive tried rewriting the sockets side of things, but i have no experience in this area.
Code:
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 VBs 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? Ive been trying it, for a few days. For some reason all the examples i get form the web just dont seem to work.
Thanks