当前位置:编程学习 > VB >>

请各位大哥路过的进来看下..........

用WINSOCKET控件做TCP的转发程序,只转发信息.
这转发程序有如下几个要求:
1.客户端和服务器连接不上或无故断开连接后会自动连接,自动连接次数为3次,会定时判断的网络的状态
2.转发程序的作用只为转发数据,服务器发送的数据是16进制的,转发程序发送的数据格式也是16进制
请各位大哥出手帮忙下!小弟感激不尽
客户端:
Private Sub Command1_Click()
Command1.Enabled = False
Command2.Enabled = True
If ipclient.Text = "" Then
    MsgBox "IP不能为空"
Else
    Winsockclient.Connect ipclient.Text, 1001
End If
If Winsockclient.State = sckConnecting Then Label3.Caption = "正连接"
If Winsockclient.State = sckClosed Then
Label3.Caption = "失  败"
Command1.Enabled = True
Command2.Enabled = False
End If
End Sub

Private Sub Command2_Click()
Dim x As String
    If Winsockclient.State = sckClosed Then
    MsgBox "未连接"
    ElseIf Winsockclient.State = sckConnected Then
    Label3.Caption = "已断开"
    Winsockclient.Close
    Command1.Enabled = True
    Command2.Enabled = False
    End If
End Sub

Private Sub Form_Load()
Winsockclient.RemotePort = 1001
Label3.Caption = "未连接"
Command1.Enabled = True
Command2.Enabled = False
End Sub

Private Sub textsend_Change()
Winsockclient.SendData textsend.Text
End Sub

Private Sub Winsockclient_Close()
Winsockclient.Close
MsgBox "与服务器断开连接"
Command1.Enabled = True
Command2.Enabled = False
Label3.Caption = "已断开"
End Sub


Private Sub Winsockclient_Connect()
Command1.Enabled = False
  Command2.Enabled = True
  Label3.Caption = "已连接"
End Sub

Private Sub Winsockclient_DataArrival(ByVal bytesTotal As Long)
Dim str As String
Winsockclient.GetData str
Textget.Text = str
End Sub

服务器:
Private Sub Form_Load()
Winsockocc.LocalPort = 1001
Winsockocc.Listen
END IF
Private Sub Winsockserver_Close()
Winsockserver.Close
Label1.Caption = "已断开"
End Sub

Private Sub Winsockserver_ConnectionRequest(ByVal requestID As Long)
If Winsockserver.State <> sckClosed Then Winsockserver.Close
Winsockserver.Accept requestID
Winsocksever.SendData "ok"
Label1.Caption = "已经建立连接"
Winsockserver.SendData occdata
End Sub

Private Sub Winsockserver_DataArrival(ByVal bytesTotal As Long)
Dim str As String
Winsockserver.GetData str
If str = "Q" Then
Winsockserver.Close
Winsockserver.LocalPort = 1001
Winsockserver.Listen
End If
End Sub --------------------编程问答-------------------- 楼主,能否指明问题出在哪里? --------------------编程问答-------------------- 自己顶下!
各位大虾快来帮忙啊,拜托了
转发程序是不是把客户端和服务器的代码合一起就行了?
补充:这程序是1对1的,上下就1个服务器和客户端 --------------------编程问答-------------------- 我只会做独立的C/S,转发程序我不知道怎么做,就是是把客户端和服务器的代码合并在一起就可以了? --------------------编程问答-------------------- 怎么没人来的啊,难道是我讲不太清楚?
PS:现在有A,B,C三台电脑,A把数据包发送给B,B再把数据包转发给C.
数据包的发送与发送是不是和一般数据的接受都一样?
DIM AAA AS BYTE
WINSOCK1.GETDATA AAA
现在电脑B上的转发程序怎么做,请各位大虾帮帮忙, --------------------编程问答-------------------- 我第一次做网络数据包转发器,请各位大虾帮我看下我的程序对不对?
如果网络连接失败,重复连接3次的定时器 timer控件的用法是什么样,应该放在哪里
Private Sub Command1_Click()
Command1.Enabled = False
Command2.Enabled = True
If ipclient.Text = "" Then
    ipclient.SetFocus
    MsgBox "服务器IP不能为空"
  
ElseIf Text2.Text = "" Then
    Text2.SetFocus
    MsgBox "服务器端口不能为空"
Else
    Winsockclient.Connect ipclient.Text, Text2.Text
End If
If Winsockclient.State = sckConnecting Then Label3.Caption = "与服务器正在连接"
If Winsockclient.State = sckClosed Then
Label3.Caption = "与服务器连接失败"
Command1.Enabled = True
Command2.Enabled = False
End If
End Sub

Private Sub Command2_Click()
Dim x As String
    If Winsockclient.State = sckClosed Then
    MsgBox "与服务器未连接"
    ElseIf Winsockclient.State = sckConnected Then
    Label3.Caption = "与服务器已断开"
    Winsockclient.Close
    Command1.Enabled = True
    Command2.Enabled = False
    End If
End Sub

Private Sub Form_Load()
'Winsockclient.RemotePort =1001
ipserver.Text = Winsockserver.LocalIP
Winsockserver.LocalPort = 1002
Winsockserver.Listen
Text1.Text = Winsockserver.LocalPort
'中转站作为服务器时
Label3.Caption = "未连接"
Command1.Enabled = True
Command2.Enabled = False
End Sub


'Winsockserver.LocalPort = Text1.Text
'Winsockserver.Listen


Private Sub textsend_Change()
Winsockserver.SendData textsend.Text
End Sub

Private Sub Winsockclient_Close()
Winsockclient.Close
MsgBox "与服务器断开连接"
Command1.Enabled = True
Command2.Enabled = False
Label3.Caption = "已断开"
End Sub


Private Sub Winsockclient_Connect()
Command1.Enabled = False
  Command2.Enabled = True
  Label3.Caption = "与服务器已连接"
End Sub

Private Sub Winsockclient_DataArrival(ByVal bytesTotal As Long)
Dim str As String
Dim at As String
Winsockclient.GetData str
Winsockserver.SendData str
End Sub

Private Sub Winsockserver_Close()
Winsockserver.Close
MsgBox "与客户端断开连接"
Winsockserver.LocalPort = Text1.Text
Winsockserver.Listen
End Sub

Private Sub Winsockserver_ConnectionRequest(ByVal requestID As Long)
If Winsockserver.State <> sckClosed Then Winsockserver.Close
Winsockserver.Accept requestID
End Sub

--------------------编程问答-------------------- 有问题请先GOOGLE,BAIDU --------------------编程问答-------------------- 1,首先应该给出错误信息
2.自己调试下问题代码大概在哪里?
补充:VB ,  网络编程
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,