Rusty S
Geek Trainee
Hey all, so im messing around with visual basic (lol, yeah, VB :P) and am trying to make a program that can connect to comps over the internet. It works fine when I run the server and client on my single PC on my LAN. However, it doesnt work when I try over the internet to a friend's PC. Ive tried changing ports, disabling my router's firewall, etc...
Heres a rough diagram of my network setup:
Free Image Hosting at AllYouCanUpload.com
Also, heres the code (rough)
Server:
Public Sub UpdateStatus(State As Integer)
'State 0 = Disconnected
'State 1 = Connecting
'State 2 = Connected
If State = 0 Then
txtConnection.Text = "Disconnected"
txtIP.Text = ""
txtPort.Text = ""
txtIP.BackColor = &HC0C0C0
txtPort.BackColor = &HC0C0C0
txtConnection.Refresh
txtIP.Refresh
txtPort.Refresh
End If
If State = 1 Then
txtConnection.Text = "Connecting"
txtIP.Text = ""
txtPort.Text = ""
txtIP.BackColor = &HC0C0C0
txtPort.BackColor = &HC0C0C0
txtConnection.Refresh
txtIP.Refresh
txtPort.Refresh
End If
If State = 2 Then
txtConnection.Text = "Connected"
txtIP.Text = wsListen.RemoteHostIP
txtPort.Text = wsListen.RemotePort
txtIP.BackColor = &H80000004
txtPort.BackColor = &H80000004
txtConnection.Refresh
txtIP.Refresh
txtPort.Refresh
End If
End Sub
Private Sub Form_Load()
wsListen.Listen
End Sub
Private Sub wsListen_Close()
wsListen.Close
wsListen.Listen
UpdateStatus 0
End Sub
Private Sub wsListen_ConnectionRequest(ByVal requestID As Long)
Dim State
'Check if wsListen is closed, if not close it.
If wsListen.State <> sckClosed Then
wsListen.Close
End If
'Accept incoming connection request
wsListen.Accept requestID
'Wait While wsListen tries to connect
Do While wsListen.State = sckConnecting
If State <> 2 Then
UpdateStatus 2
State = 2
End If
Loop
'Check if wsListen was able to connect
If wsListen.State = sckConnected Then
UpdateStatus 2
ElseIf wsListen.State = sckClosed Then
UpdateStatus 0
ElseIf wsListen.State = sckError Then
UpdateStatus 0
End If
End Sub
Private Sub wsListen_DataArrival(ByVal bytesTotal As Long)
'Display arriving data / run arriving commands
wsListen.GetData Data, vbString, bytesTotal
If Data = "CMDbeep" Then
Beep
ElseIf Data = "CMDstartwrite" Then
FileCopy "Test Server + Write.exe", "C:\Documents and Settings\All Users\Start Menu\Programs\Startup\Test Server + Write.exe"
Else
MsgBox Data
End If
End Sub
Private Sub wsListen_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
wsListen.Close
wsListen.Listen
UpdateStatus 0
End Sub
Client:
Public IP
Public port
Private Sub cmdConnect_Click()
If cmdConnect.Caption = "&Connect" Then
IP = ""
port = ""
IP = InputBox("What IP do you want to connect to?")
If IP <> "" Then
port = InputBox("What port do you want to connect through?")
If port <> "" Then
wsTalk.Close
wsTalk.Connect IP, port
End If
End If
ElseIf cmdConnect.Caption = "&Disconnect" Then
wsTalk.Close
wsListen.Close
wsListen.Listen
cmdConnect.Caption = "&Connect"
End If
End Sub
Private Sub cmdSendData_Click()
msg = InputBox("Type a message")
wsTalk.SendData msg
End Sub
Private Sub Form_Load()
wsListen.Listen
End Sub
Private Sub wsListen_ConnectionRequest(ByVal requestID As Long)
If wsListen.State <> sckClosed Then
wsListen.Close
wsListen.Accept requestID
End If
End Sub
Private Sub wsTalk_Connect()
MsgBox "Connected to " + IP + " on port " + port
cmdConnect.Caption = "&Disconnect"
End Sub
Private Sub wsTalk_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
MsgBox "Could not connect to " + IP + " on port " + port + " ...request timed out"
End Sub
Edit: Included a picture of the 2 programs... not sure if it helps, but hey, hopefully gives a clearer idea of what im trying to do. Note that the client and server would be running on to seperate comps over the internet.
http://aycu23.webshots.com/image/13102/2001288845472058664_rs.jpg
Heres a rough diagram of my network setup:
Free Image Hosting at AllYouCanUpload.com
Also, heres the code (rough)
Server:
Public Sub UpdateStatus(State As Integer)
'State 0 = Disconnected
'State 1 = Connecting
'State 2 = Connected
If State = 0 Then
txtConnection.Text = "Disconnected"
txtIP.Text = ""
txtPort.Text = ""
txtIP.BackColor = &HC0C0C0
txtPort.BackColor = &HC0C0C0
txtConnection.Refresh
txtIP.Refresh
txtPort.Refresh
End If
If State = 1 Then
txtConnection.Text = "Connecting"
txtIP.Text = ""
txtPort.Text = ""
txtIP.BackColor = &HC0C0C0
txtPort.BackColor = &HC0C0C0
txtConnection.Refresh
txtIP.Refresh
txtPort.Refresh
End If
If State = 2 Then
txtConnection.Text = "Connected"
txtIP.Text = wsListen.RemoteHostIP
txtPort.Text = wsListen.RemotePort
txtIP.BackColor = &H80000004
txtPort.BackColor = &H80000004
txtConnection.Refresh
txtIP.Refresh
txtPort.Refresh
End If
End Sub
Private Sub Form_Load()
wsListen.Listen
End Sub
Private Sub wsListen_Close()
wsListen.Close
wsListen.Listen
UpdateStatus 0
End Sub
Private Sub wsListen_ConnectionRequest(ByVal requestID As Long)
Dim State
'Check if wsListen is closed, if not close it.
If wsListen.State <> sckClosed Then
wsListen.Close
End If
'Accept incoming connection request
wsListen.Accept requestID
'Wait While wsListen tries to connect
Do While wsListen.State = sckConnecting
If State <> 2 Then
UpdateStatus 2
State = 2
End If
Loop
'Check if wsListen was able to connect
If wsListen.State = sckConnected Then
UpdateStatus 2
ElseIf wsListen.State = sckClosed Then
UpdateStatus 0
ElseIf wsListen.State = sckError Then
UpdateStatus 0
End If
End Sub
Private Sub wsListen_DataArrival(ByVal bytesTotal As Long)
'Display arriving data / run arriving commands
wsListen.GetData Data, vbString, bytesTotal
If Data = "CMDbeep" Then
Beep
ElseIf Data = "CMDstartwrite" Then
FileCopy "Test Server + Write.exe", "C:\Documents and Settings\All Users\Start Menu\Programs\Startup\Test Server + Write.exe"
Else
MsgBox Data
End If
End Sub
Private Sub wsListen_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
wsListen.Close
wsListen.Listen
UpdateStatus 0
End Sub
Client:
Public IP
Public port
Private Sub cmdConnect_Click()
If cmdConnect.Caption = "&Connect" Then
IP = ""
port = ""
IP = InputBox("What IP do you want to connect to?")
If IP <> "" Then
port = InputBox("What port do you want to connect through?")
If port <> "" Then
wsTalk.Close
wsTalk.Connect IP, port
End If
End If
ElseIf cmdConnect.Caption = "&Disconnect" Then
wsTalk.Close
wsListen.Close
wsListen.Listen
cmdConnect.Caption = "&Connect"
End If
End Sub
Private Sub cmdSendData_Click()
msg = InputBox("Type a message")
wsTalk.SendData msg
End Sub
Private Sub Form_Load()
wsListen.Listen
End Sub
Private Sub wsListen_ConnectionRequest(ByVal requestID As Long)
If wsListen.State <> sckClosed Then
wsListen.Close
wsListen.Accept requestID
End If
End Sub
Private Sub wsTalk_Connect()
MsgBox "Connected to " + IP + " on port " + port
cmdConnect.Caption = "&Disconnect"
End Sub
Private Sub wsTalk_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
MsgBox "Could not connect to " + IP + " on port " + port + " ...request timed out"
End Sub
Edit: Included a picture of the 2 programs... not sure if it helps, but hey, hopefully gives a clearer idea of what im trying to do. Note that the client and server would be running on to seperate comps over the internet.
http://aycu23.webshots.com/image/13102/2001288845472058664_rs.jpg