现在要做一个程序,装在自己的机器上,也装在远程的一个计算机上,只要知道对方的ip地址,就可以对它进行操作。主要是测试串口通信。这个应该怎么实现?用什么控件?谢谢
解决方案 »
- 人事考勤工资管理系统
- 请教大家一个问题,在读取文件的时候如何判断一个文件打开是否成功~~~~即判断该文件"是否已被其他进程锁定"
- 求可以动态显示线状图的控件?
- 水晶报表10中可以执行这样一条sql语句吗?
- WebBrowser自动跳转页面的问题
- 用VB如何创建视图?
- 从程序中获得多个值,然后根据获得的值来动态生成纵向报表!!
- 救命.我真的需要帮助.发布问题!通宵等待!谢谢!555555~~
- 获得外部程序窗体的位置
- 怎么样实时获取一个程序产生的数据
- 用winsock数组在局域网内传输文件,但打开此文件时出现"发生共享侵犯"的错误
- 关于datareport显示货币型字段的问题,求救各位大侠啊~~(在线等啊~~)
使用Winsock控件,使用TCP协议或UDP协议(适合局域网)均可。
使用前者的话需要写一个服务器程序和一个客户段程序,客户段程序负责向服务器段发送命令(命令协议可以自己定义)服务器段接收到命令后按照命令去执行一个操作(比如按下某一个按钮,或者直接执行一个过程等等)。
使用后者的话不需要写服务器端或客户段,两者只是IP地址的差异而已。也是向需要控制的那台机器发送命令。
当执行完毕后需要将执行的结果返回给控制的那台机器,可以以文件格式返回结果,也可以直接以数字或字符方式返回结果。返回图片文件的话需要有足够的带宽,因为VB默认是BMP格式,算1秒钟2帧的话,在1024*768的分辨率下也有5M多的数据。
因为这里牵涉的东西实在不少,无法给出更详细的说明,只能给到楼主一个思路,希望有所帮助。
用TCP做
那应该参考哪写资料?
winsock控件怎么填加?
服务器端代码:
Option Explicit
Private Sub CloseCmd_Click()
SockCtrl(0).Close
End SubPrivate Sub Form_Load()
SockCtrl(0).Protocol = sckTCPProtocol
HostNameLbl = SockCtrl(0).LocalHostName
SockCtrl(0).LocalPort = 6800
PortTxt = SockCtrl(0).LocalPort
Me.Caption = "服务器" & " - " & SockCtrl(0).LocalIP
End SubPrivate Sub ListenCmd_Click()
' SockCtrl.Bind CInt(PortTxt), SockCtrl.LocalIP
SockCtrl(0).LocalPort = CInt(PortTxt)
SockCtrl(0).Listen
End Sub
Private Sub PortTxt_Change()
Dim i As Integer, ch As Byte
For i = 1 To Len(PortTxt)
ch = Asc(Mid(PortTxt, i, 1))
If ((ch < 48) Or (ch > 57)) Then
MsgBox "请输入0-9之间的数字", vbCritical, "输入错误"
SendKeys "{BS}"
Exit Sub
End If
Next i
End Sub
Private Sub PortTxt_GotFocus()
PortTxt.SelStart = 0
PortTxt.SelLength = Len(PortTxt)
End Sub
Private Sub PortTxt_KeyPress(KeyAscii As Integer)
If (KeyAscii = vbKeyReturn) Then
If (Val(PortTxt) > 65535) Then
MsgBox "请输入0-65535之间的值", vbCritical, "数值太大"
Exit Sub
End If
Call ListenCmd_Click
End If
End Sub
Private Sub SockCtrl_ConnectionRequest(Index As Integer, ByVal requestID As Long)
Static Cnt As Boolean
If (Not Cnt) Then
Load SockCtrl(1)
SockCtrl(1).Accept (requestID)
Cnt = True
End If
End SubPrivate Sub SockCtrl_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim data As String, ip As String
data = Space(bytesTotal + 2)
SockCtrl(Index).GetData data, vbString, bytesTotal
Dim i As Integer, ch As Byte, msg As String
For i = 1 To Len(data)
ch = Asc(Mid(data, i, 1))
If ((ch = 13) Or (ch = 10)) Then
If (i < Len(data) - 1) Then
msg = msg & vbCrLf
End If
Else
msg = msg & Chr(ch)
End If
Next i
ip = SockCtrl(Index).RemoteHostIP & ": " & data
ListMsg.AddItem ip
End SubPrivate Sub SockCtrl_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)
MsgBox Description, vbCritical, "错误"
SockCtrl(Index).Close
End Sub客户端代码
Option Explicit
Private Sub ConnectCmd_Click()
If (SockCtrl.State = sckConnected) Then
Exit Sub
End If
SockCtrl.LocalPort = 0
SockCtrl.RemoteHost = HostTxt
SockCtrl.RemotePort = CInt(Porttxt)
SockCtrl.Connect
End SubPrivate Sub DisconnectCmd_Click()
If (SockCtrl.State = sckClosed) Then
Exit Sub
End If
SockCtrl.Close
End Sub
Private Sub Form_Load()
SockCtrl.Protocol = sckTCPProtocol
End Sub
Private Sub HostTxt_GotFocus()
HostTxt.SelStart = 0
HostTxt.SelLength = Len(HostTxt)
End Sub
Private Sub HostTxt_KeyPress(KeyAscii As Integer)
If ((KeyAscii = vbKeyReturn) And (Len(LTrim(HostTxt)) > 0)) Then
SendKeys "{TAB}"
End If
End Sub
Private Sub HostTxt_LostFocus()
If Len(LTrim(HostTxt)) = 0 Then
HostTxt.SetFocus
End If
End Sub
Private Sub MsgTxt_GotFocus()
MsgTxt.SelStart = 0
MsgTxt.SelLength = Len(MsgTxt)
End SubPrivate Sub Porttxt_Change()
Dim i As Integer, ch As Byte
For i = 1 To Len(Porttxt)
ch = Asc(Mid(Porttxt, i, 1))
If ((ch < 48) Or (ch > 57)) Then
MsgBox "请输入0-9之间的数字", vbCritical, "输入错误"
SendKeys "{BS}"
Exit Sub
End If
Next i
End Sub
Private Sub Porttxt_KeyPress(KeyAscii As Integer)
If (KeyAscii = vbKeyReturn) Then
If (Val(Porttxt) > 65535) Then
MsgBox "请输入0-65535之间的值", vbCritical, "数值太大"
Exit Sub
End If
Call ConnectCmd_Click
End If
End Sub
Private Sub SendCmd_Click()
If (SockCtrl.State = sckConnected) Then
SockCtrl.SendData MsgTxt
End If
End SubPrivate Sub SockCtrl_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)
MsgBox Description, vbCritical, "错误"
SockCtrl.Close
End Sub
如果要求不是服务器端和客户端
而是两个单机之间测试通讯
需要改动哪些