我要实现2台客户机与2台服务器实行通信,具体是这样的:客户机(机房)2台:IP地址分别为192.168.1.10 /192.168.1.11
服务器端(调度室)2台:IP地址分别为192.168.1.15 /192.168.1.16现在想在任一客户机上发送一个消息给2台服务器,让它们同时响应,然后服务器端程序弹出一个提示窗口;我现在试过3台客户机向其中一台服务器发送消息时可以响应(而且服务器端不设客户机的IP居然也能收到,不懂原因),但2台同时就不行了,是不是在客户端要再加一个winsock控件?具体要怎样做请给出代码,谢谢!
服务器端(调度室)2台:IP地址分别为192.168.1.15 /192.168.1.16现在想在任一客户机上发送一个消息给2台服务器,让它们同时响应,然后服务器端程序弹出一个提示窗口;我现在试过3台客户机向其中一台服务器发送消息时可以响应(而且服务器端不设客户机的IP居然也能收到,不懂原因),但2台同时就不行了,是不是在客户端要再加一个winsock控件?具体要怎样做请给出代码,谢谢!
clientsck.RemoteHost = serverIp '服务端IP:变量serverIP赋值
clientsck.RemotePort = 2000 '表示服务端端口
clientsck.Bind 2001 '绑定到本地端口 clientsck.senddate "有新的报修单请查收"
serversck.LocalPort = 2000
clientsck.RemoteHost = clientIp '客户机IP:变量clientIP赋值
clientsck.RemotePort = 2001 '表示客户机端口
clientsck.Bind 2000 '绑定到本地端口Private Sub serversck_DataArrival(ByVal bytesTotal As Long)serversck.getdate "有新的报修单请查收"
beep报修单.show '显示报修单窗口End Sub其它的就没写了,大家再帮忙看看
根据你的系统不同,调用的DLL不同(wsock32.dll或者ws2_32.dll)Declare Function recv Lib "ws2_32.dll" (ByVal s As Long, buffer As Any, ByVal length As Long, ByVal flags As Long) As Long
Declare Function send Lib "ws2_32.dll" (ByVal s As Long, buffer As Any, ByVal length As Long, ByVal flags As Long) As Long
clientsck.LocalPort = 2001
clientsck.RemoteHost = serverIp '服务端IP:变量serverIP赋值
clientsck.RemotePort = 2000 '表示服务端端口
clientsck.Bind 2001 '绑定到本地端口
clientsck.senddate "有新的报修单请查收 "
服务端:(上面把serversck写成clientsck了) serversck.LocalPort = 2000
serversck.RemoteHost = clientIp '客户机IP:变量clientIP赋值
serversck.RemotePort = 2001 '表示客户机端口
serversck.Bind 2000 '绑定到本地端口
Private Sub serversck_DataArrival(ByVal bytesTotal As Long)
serversck.getdate "有新的报修单请查收 "
beep
报修单.show '显示报修单窗口
End Sub
现在当多个客户端用时服务端就会一直弹出消息,单独一个客户端发一个服务端时则没问题
Private Sub cmdConnect_Click()
On Error GoTo ErrHandlerWith Winsock1
If .LocalPort = Empty Then
.LocalPort = Trim(txtLocalPort)
.Bind .LocalPort
End If
End WithFrame1.Enabled = True
Frame2.Enabled = True
cmdConnect.Caption = "连接成功"
cmdConnect.Enabled = FalseExit SubErrHandler:
MsgBox "连接失败", vbCritical
End Sub