Dim Receiving As BooleanPrivate Sub connect() '开始连接
If Winsock1.State <> 0 Then Exit Sub
Winsock1.RemotePort = "23"
Winsock1.RemoteHost = "134.162.19.18" 'ip 地址
Winsock1.Connect
Me.Caption = "Connecting"
end subPrivate Sub close()
If Winsock1.State = 0 Then Exit Sub
If Winsock1.State = 8 Then Exit Sub
Winsock1.SendData "logout" & Chr(13) & Chr(10)
End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim ch() As Byte
Dim TR() As Byte
Dim i As Integer
Dim str As String
Dim Pos_Tmp As Integer
Dim Str_Tmp As String
'-------------------------------------------------------------
If Not Receiving Then
Receiving = True
Else
ReList "busy"
Receiving = False
Exit Sub
End If
If (bytesTotal > 0) Then ' If there is any data...
Winsock1.GetData ch, vbByte + vbArray, bytesTotal
Else
Receiving = False
Exit Sub
End If
For i = 0 To bytesTotal - 1
str = str & Chr$(ch(i))
Next i
If Not_Echo = False Then
If ch(0) <> 255 Then
For i = 0 To bytesTotal - 1
If ch(i) = 13 Then
ReList Str_Tmp
Str_Tmp = ""
Else
If ch(i) = 10 Then
Str_Tmp = ""
Else
If Not_Return = True Then
If List1.ListCount > 0 Then
Str_Tmp = List1.List(List1.ListCount - 1) & Chr(ch(i))
List1.RemoveItem List1.ListCount - 1
End If
Not_Return = False
Else
Str_Tmp = Str_Tmp & Chr(ch(i))
End If
End If
End If
Next i
If ch(bytesTotal - 1) <> 10 Then
ReList Str_Tmp
Not_Return = True
Else
Not_Return = False
End If
End If
End If
If ch(0) = 255 Then
If ch(1) = 253 Then
ReDim TR(15) As Byte
TR(0) = 255: TR(1) = 252: TR(2) = 24
TR(3) = 255: TR(4) = 252: TR(5) = 31
TR(6) = 255: TR(7) = 252: TR(8) = 35
TR(9) = 255: TR(10) = 252: TR(11) = 39
TR(12) = 255: TR(13) = 252: TR(14) = 36
Winsock1.SendData TR
End If
If ch(1) = 251 Then
ReDim TR(2) As Byte
TR(0) = 13: TR(1) = 10
Winsock1.SendData TR
End If
End If Receiving = False
End SubPrivate Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
Dim ch(3) As Byte
If If_Check = True Then Exit Sub
If want_Time = True Then Exit Sub
If Winsock1.State <> 7 Then Exit Sub
If KeyCode = vbKeyReturn Then
Winsock1.SendData Trim(Text1.Text) & Chr(13) & Chr(10)
Text1.Text = ""
End If
If KeyCode = vbKeyControl And Trim(Text1.Text) <> "" Then
ch(0) = Asc(Left(Text1.Text, 1)) - 64: ch(1) = 13: ch(2) = 10
Winsock1.SendData ch
Text1.Text = ""
End If
If KeyCode = vbKeyF12 Then Winsock1.SendData Chr(32)
End SubSub ReList(ConTent As String)
If If_Record = True Then
If List1.ListCount > 299 Then Print #9, List1.List(0)
End If
List1.AddItem ConTent
If List1.ListCount > 300 Then List1.RemoveItem 0
List1.Selected(List1.ListCount - 1) = True
End Sub
If Winsock1.State <> 0 Then Exit Sub
Winsock1.RemotePort = "23"
Winsock1.RemoteHost = "134.162.19.18" 'ip 地址
Winsock1.Connect
Me.Caption = "Connecting"
end subPrivate Sub close()
If Winsock1.State = 0 Then Exit Sub
If Winsock1.State = 8 Then Exit Sub
Winsock1.SendData "logout" & Chr(13) & Chr(10)
End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim ch() As Byte
Dim TR() As Byte
Dim i As Integer
Dim str As String
Dim Pos_Tmp As Integer
Dim Str_Tmp As String
'-------------------------------------------------------------
If Not Receiving Then
Receiving = True
Else
ReList "busy"
Receiving = False
Exit Sub
End If
If (bytesTotal > 0) Then ' If there is any data...
Winsock1.GetData ch, vbByte + vbArray, bytesTotal
Else
Receiving = False
Exit Sub
End If
For i = 0 To bytesTotal - 1
str = str & Chr$(ch(i))
Next i
If Not_Echo = False Then
If ch(0) <> 255 Then
For i = 0 To bytesTotal - 1
If ch(i) = 13 Then
ReList Str_Tmp
Str_Tmp = ""
Else
If ch(i) = 10 Then
Str_Tmp = ""
Else
If Not_Return = True Then
If List1.ListCount > 0 Then
Str_Tmp = List1.List(List1.ListCount - 1) & Chr(ch(i))
List1.RemoveItem List1.ListCount - 1
End If
Not_Return = False
Else
Str_Tmp = Str_Tmp & Chr(ch(i))
End If
End If
End If
Next i
If ch(bytesTotal - 1) <> 10 Then
ReList Str_Tmp
Not_Return = True
Else
Not_Return = False
End If
End If
End If
If ch(0) = 255 Then
If ch(1) = 253 Then
ReDim TR(15) As Byte
TR(0) = 255: TR(1) = 252: TR(2) = 24
TR(3) = 255: TR(4) = 252: TR(5) = 31
TR(6) = 255: TR(7) = 252: TR(8) = 35
TR(9) = 255: TR(10) = 252: TR(11) = 39
TR(12) = 255: TR(13) = 252: TR(14) = 36
Winsock1.SendData TR
End If
If ch(1) = 251 Then
ReDim TR(2) As Byte
TR(0) = 13: TR(1) = 10
Winsock1.SendData TR
End If
End If Receiving = False
End SubPrivate Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
Dim ch(3) As Byte
If If_Check = True Then Exit Sub
If want_Time = True Then Exit Sub
If Winsock1.State <> 7 Then Exit Sub
If KeyCode = vbKeyReturn Then
Winsock1.SendData Trim(Text1.Text) & Chr(13) & Chr(10)
Text1.Text = ""
End If
If KeyCode = vbKeyControl And Trim(Text1.Text) <> "" Then
ch(0) = Asc(Left(Text1.Text, 1)) - 64: ch(1) = 13: ch(2) = 10
Winsock1.SendData ch
Text1.Text = ""
End If
If KeyCode = vbKeyF12 Then Winsock1.SendData Chr(32)
End SubSub ReList(ConTent As String)
If If_Record = True Then
If List1.ListCount > 299 Then Print #9, List1.List(0)
End If
List1.AddItem ConTent
If List1.ListCount > 300 Then List1.RemoveItem 0
List1.Selected(List1.ListCount - 1) = True
End Sub
relist里面有个 print #9的语句,把它去掉
255是请求字,251是回应字。 我可以用它登录到局域网的solaris系统,反正你能收到乱码说明已经差不多了,不过如果是显示汉字就可能确实是乱码,那就要请教别人了,我也不知道。 有一本 vb网络编程, 蓝色封面,推荐。