我不懂WINSOCK 但是要实现C/系统,得用WINSOCK通信吧, 如何用VB实现呢?
这里请各位帮个忙,给我个例子参考学习一下下!
这里请各位帮个忙,给我个例子参考学习一下下!
解决方案 »
- VB 浮点类型的加减法
- 用VB做记事本中,有一个检索功能,检索时向上、向下应该怎么判断呢?
- 关于信任连接sql2000数据库跨网段的问题
- 小弟想改作vb程序员,看行不?
- 如何改变data1.database.updatable和data1.recordest.updatable的属性?谢谢
- 简单的问题
- 高分求救,access数据库同控件的连接问题!急急急!!
- 菜单问题 -------------在线等待
- 在vb中如何屏蔽Ctrl+Alt+Del(win2000系统)-100分
- 怎样在vb.net中实现vb中的Set DataGrid.DataSource = Adodc 语句
- 如何屏蔽掉Text控件的右键快捷菜单?
- 关于用SQL语句增加列,怎么把列的名称命名为今天的日期
Private Sub cmdConnect_Click()
On Error GoTo ErrorPro sckClient.Connect Exit SubErrorPro: MsgBox "服?器未?或网?出?!" EndEnd SubPrivate Sub cmdSent_Click()
sckClient.SendData txtSend.Text
End SubPrivate Sub Form_Load()
sckClient.RemoteHost = "127.0.0.1"
sckClient.RemotePort = 1000
End Sub
Private Sub sckClient_Close() MsgBox "服?器通道已??!" EndEnd SubPrivate Sub sckClient_Connect() MsgBox "?接成功!"
cmdConnect.Enabled = FalseEnd SubPrivate Sub sckClient_DataArrival(ByVal bytesTotal As Long) Dim s As String sckClient.GetData s lstReceive.AddItem sEnd SubPrivate Sub sckClient_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) sckClient.Close
cmdConnect.Enabled = True
End Sub
服务端:
Private MaxChan As IntegerPrivate Sub Form_Load()
Dim i As Integer MaxChan = 10 For i = 1 To MaxChan - 1 Load sckServer(i) Next i sckListen.LocalPort = 1000 sckListen.Listen
End Sub
Private Sub sckBusy_Close()
sckBusy.Close
End SubPrivate Sub sckBusy_DataArrival(ByVal bytesTotal As Long)
sckBusy.SendData "服?器忙,?稍后再?接!"
DoEvents
End SubPrivate Sub sckListen_ConnectionRequest(ByVal requestID As Long)
Dim i As Integer
'决定由?一Winsock接受?求
For i = 0 To MaxChan - 1
If sckServer(i).State = 0 Then
Exit For
End If
Next i If sckServer(i).State = 0 Then
sckServer(i).Accept requestID
Exit Sub
End If '如果所有Winsock都用完?由??的“忙”Winsock接受?求,以免用?要求得不到??
sckBusy.Close
sckBusy.Accept requestIDEnd Sub
Private Sub sckListen_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)
sckListen.Close
sckListen.LocalPort = 1000
sckListen.Listen
End Sub
Private Sub sckServer_Close(Index As Integer)
sckServer(Index).Close
End Sub
Private Sub sckServer_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim s As String
Dim i As Integer
sckServer(Index).GetData s
If UCase(Left(Trim(s), 2)) = "PT" Then '判断是否?悄悄?,点?点方式
If IsNumeric(Mid(Trim(s), 3, 1)) Then
i = Mid(Trim(s), 3, 1)
sckServer(i).SendData "Channel " & Index & " " & Right(Trim(s), Len(Trim(s)) - 3)
DoEvents
End If
Else '广播方式
For i = 0 To MaxChan - 1
'利用winsock的State属性?所有?接在服?器上的客??消息
If sckServer(i).State = 7 Then
sckServer(i).SendData "Channel " & Index & " " & Trim(s)
DoEvents
End If
Next i
End If
lstReceive.AddItem "Channel " & Index & " " & Trim(s)
End SubPrivate Sub sckServer_Error(Index As Integer, _
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)
sckServer(Index).Close
End Sub
控件就自己加下了,我就不一一说了.
注:本例转载.