5 个解决方案
#1
单线程的还是多线程的,正好刚做了个多线程的简单的vb服务器,需要的话给我个信箱
#2
这里有一个用winsock的控件做的数据接收,可以给你参考
Private Sub Winsock1_DataArrival(index As Integer, ByVal bytesTotal As Long)
' On Error Resume Next
Dim BBB() As Byte
Dim I, j As Integer
'获取客户端数据
I = Winsock1(index).BytesReceived
ReDim BBB(I)
Winsock1(index).GetData BBB, vbByte, I '将接收到的数据一起存放到BBB()中做处理
For j = 0 To I - 1 '
’自己处理各个字节的数据
Next j
Winsock1(index).SendData "Ok"
End Sub
Private Sub Winsock1_DataArrival(index As Integer, ByVal bytesTotal As Long)
' On Error Resume Next
Dim BBB() As Byte
Dim I, j As Integer
'获取客户端数据
I = Winsock1(index).BytesReceived
ReDim BBB(I)
Winsock1(index).GetData BBB, vbByte, I '将接收到的数据一起存放到BBB()中做处理
For j = 0 To I - 1 '
’自己处理各个字节的数据
Next j
Winsock1(index).SendData "Ok"
End Sub
#3
服务器端程序:
添加一个winsock,命名为sckServer(0)
Private Sub Form_Load()
sckServer(0).LocalPort = 6000'可自行设置,最好在1024以上
sckServer.Listen
End Sub
Private Sub sckServer_ConnectionRequest(Index As Integer, ByVal requestID As Long)
Load sckServer(1)
sckServer(1).Accept requestID '这时,服务器程序接受客户机连接请求,sckServer(1)与sckClient之间建立一个连接
'在此基础上,两者之间可分别调用SendData方法发送数据
End Sub
Private Sub sckServer_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim sData As String
sckServer(Index).GetData sData
'......处理接收的数据报
sckServer(Index).SendData DataToSendBack '将发送过来的数据报中的一段内容(DataToSendBack )发回去
MsgBox "接收客户机数据:" & sData '将接收的数据显示出来
End Sub
'==================================================
客户机程序:
添加一个winsock,命名为sckClient;客户机上加两个按钮cmdConnect和cmdSend
Private Sub cmdConnect_Click()
sckClient.RemotePort = 6000
sckClient.RemoteIP = 192.168.1.6'加入服务器地址IP为192.168.1.6
sckClient.Connect'此时客户机向服务器发送一个连接请求,在服务器端会触发sckServer_ConnectionRequest事件
End Sub
当服务器端调用sckServer(1).Accept requestID 后,客户机会触发以下事件
Private Sub sckClient_Connect()
MsgBox "已经连接到服务器!"
End Sub
这样客户机就可发送数据到服务器了,如:
Private Sub cmdSend_Click()
sckClient.SendData "你好!"
End Sub
Private Sub sckClient_DataArrival(ByVal bytesTotal As Long)
Dim sData As String
sckClient.GetData sData
'......数据报内容处理
MsgBox "接收到服务器数据:" & sData '将接收的数据显示出来
End Sub
#4
感谢大家
回2楼的 发sleven.lei@shijinet.com.cn
回2楼的 发sleven.lei@shijinet.com.cn
#5
感谢2楼的XD
我用的是单线程的 基本解决了
再次感谢大家一下
就此结帖吧
我用的是单线程的 基本解决了
再次感谢大家一下
就此结帖吧
#1
单线程的还是多线程的,正好刚做了个多线程的简单的vb服务器,需要的话给我个信箱
#2
这里有一个用winsock的控件做的数据接收,可以给你参考
Private Sub Winsock1_DataArrival(index As Integer, ByVal bytesTotal As Long)
' On Error Resume Next
Dim BBB() As Byte
Dim I, j As Integer
'获取客户端数据
I = Winsock1(index).BytesReceived
ReDim BBB(I)
Winsock1(index).GetData BBB, vbByte, I '将接收到的数据一起存放到BBB()中做处理
For j = 0 To I - 1 '
’自己处理各个字节的数据
Next j
Winsock1(index).SendData "Ok"
End Sub
Private Sub Winsock1_DataArrival(index As Integer, ByVal bytesTotal As Long)
' On Error Resume Next
Dim BBB() As Byte
Dim I, j As Integer
'获取客户端数据
I = Winsock1(index).BytesReceived
ReDim BBB(I)
Winsock1(index).GetData BBB, vbByte, I '将接收到的数据一起存放到BBB()中做处理
For j = 0 To I - 1 '
’自己处理各个字节的数据
Next j
Winsock1(index).SendData "Ok"
End Sub
#3
服务器端程序:
添加一个winsock,命名为sckServer(0)
Private Sub Form_Load()
sckServer(0).LocalPort = 6000'可自行设置,最好在1024以上
sckServer.Listen
End Sub
Private Sub sckServer_ConnectionRequest(Index As Integer, ByVal requestID As Long)
Load sckServer(1)
sckServer(1).Accept requestID '这时,服务器程序接受客户机连接请求,sckServer(1)与sckClient之间建立一个连接
'在此基础上,两者之间可分别调用SendData方法发送数据
End Sub
Private Sub sckServer_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim sData As String
sckServer(Index).GetData sData
'......处理接收的数据报
sckServer(Index).SendData DataToSendBack '将发送过来的数据报中的一段内容(DataToSendBack )发回去
MsgBox "接收客户机数据:" & sData '将接收的数据显示出来
End Sub
'==================================================
客户机程序:
添加一个winsock,命名为sckClient;客户机上加两个按钮cmdConnect和cmdSend
Private Sub cmdConnect_Click()
sckClient.RemotePort = 6000
sckClient.RemoteIP = 192.168.1.6'加入服务器地址IP为192.168.1.6
sckClient.Connect'此时客户机向服务器发送一个连接请求,在服务器端会触发sckServer_ConnectionRequest事件
End Sub
当服务器端调用sckServer(1).Accept requestID 后,客户机会触发以下事件
Private Sub sckClient_Connect()
MsgBox "已经连接到服务器!"
End Sub
这样客户机就可发送数据到服务器了,如:
Private Sub cmdSend_Click()
sckClient.SendData "你好!"
End Sub
Private Sub sckClient_DataArrival(ByVal bytesTotal As Long)
Dim sData As String
sckClient.GetData sData
'......数据报内容处理
MsgBox "接收到服务器数据:" & sData '将接收的数据显示出来
End Sub
#4
感谢大家
回2楼的 发sleven.lei@shijinet.com.cn
回2楼的 发sleven.lei@shijinet.com.cn
#5
感谢2楼的XD
我用的是单线程的 基本解决了
再次感谢大家一下
就此结帖吧
我用的是单线程的 基本解决了
再次感谢大家一下
就此结帖吧