如何使用vb.net将消息从一台计算机发送到另一台计算机?

时间:2011-08-25 19:43:39

标签: vb.net networking bluetooth message

好的,所以我一直想要这样做几年,让我感到惊讶的是没有人能想出一个解决方案......我想写一个程序(最好是在vb.net中)可以发送发送到与我连接到同一网络的另一台计算机(或设备)的消息。我希望消息显示在弹出消息框中的另一台计算机(或设备)上。此外,如果可以通过某种蓝牙连接完成,那将是理想的,如果没有,那么本地IP连接将会这样做。我不知道我会怎么做但我知道这是可能的,因为我已经看到一些程序这样做...事实上我已经看到一个名为blackrain的程序,没有安装任何额外的软件,可以显示消息一个ipod触摸屏,指示yser做什么,然后几乎立即显示他们在计算机屏幕上输入的结果。如果有人有任何想法,我想知道它是如何工作的,请随时分享!

其他详细信息:

  • 我对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

但是我想在没有任何批处理文件的情况下这样做,因为我不想在另一端设置任何东西。

谢谢!

是否与套接字或端口有关?


1 个答案:

答案 0 :(得分:2)

使用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列表,也可以让每台联网计算机都订阅&#39;如果它在一个盒子上静态托管,你的程序。出于我的目的,当我使用此代码时,主机进程位于已知服务器上。想要接收消息的客户端进程向主机发送快速消息,然后主机将记录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)