好的,所以我一直想要这样做几年,让我感到惊讶的是,没有人能想出一个解决方案…我想写一个程序(最好是在vb.net中)可以发送消息给与我连接到同一网络的另一台计算机(或设备).我希望
额外细节:
>我有很多vb.net,命令行函数和vbscript的经验.
>我目前正在运行Windows 7 Professional x64
>我有一个外置蓝牙迷你适配器.
>我希望这是(如果可能的话)类似于那些让您通过wifi同步控制笔记本电脑光标的ipod / iphone应用程序;从某种意义上说,不需要设置,也不需要额外的软件. (例如:remotepad.ipa)
消息框的代码如下:
ObjClient = New TcpClient("127.0.0.1", 1000) TcpClient.Start() Messagebox.Show("Popup Message Here") TcpClient.Close()
我知道这段代码在命令提示符中会做同样的事情:
msg * /SERVER:localhost hello
或者此代码将在命令提示符中执行相同的操作:
msg * hello > localhost
但是如果可能的话,我想在没有任何批处理文件的情况下这样做,因为我不想在另一端设置任何东西.
谢谢!
它与套接字或端口有什么关系吗?
使用TcpClient和相关库肯定是正确的答案.将数据写入特定IP /端口的示例代码:
''' <summary> ''' Send data over TCP/IP network ''' </summary> ''' <param name="data">Data string to write</param> ''' <param name="IP">The connected destination TcpClient</param> Public Sub WriteData(ByVal data As String, ByRef IP As String) Console.WriteLine("Sending message """ & data & """ to " & IP) Dim client As TcpClient = New TcpClient() client.Connect(New IPEndPoint(IPAddress.Parse(IP), My.Settings.CommPort)) Dim stream As NetworkStream = client.GetStream() Dim sendBytes As Byte() = Encoding.ASCII.GetBytes(data) stream.Write(sendBytes, 0, sendBytes.Length) End Sub
使用TcpListener来监视传入的数据.
http://msdn.microsoft.com/en-us/library/system.net.sockets.tcplistener.aspx
编辑:要知道要将其发送到哪个IP …您可以拥有要连接的内部IP列表,或者让每个联网计算机“订阅”到您的程序(如果它是静态托管在一个盒子上).出于我的目的,当我使用此代码时,主机进程位于已知服务器上.想要接收消息的客户端进程向主机发送快速消息,然后主机将记录IP以便稍后发送.
获取请求客户端的IP:
''Given variable m_listener is an active TcpListener... Dim client As TcpClient = m_listener.AcceptTcpClient() Dim requesterIP As String = client.Client.RemoteEndPoint.ToString().Split(New Char() {":"})(0)