2011-08-25 125 views
4

好吧,所以我一直想這樣做幾年現在,它讓我驚訝,沒有人可以拿出一個解決方案...我想寫一個程序(最好在vb.net),可以發送消息發送到與我連接到同一網絡的另一臺計算機(或設備)。我希望消息在彈出的消息框中顯示在其他計算機(或設備)上。此外,如果這可以通過某種藍牙連接完成,那麼這將是理想的,否則,本地IP連接將會執行。我不知道我會如何去做這件事,但我知道這是可能的,因爲我已經看到一些程序這樣做......事實上,我已經看到了一個名爲blackrain的程序,沒有任何額外的軟件安裝,可以顯示消息一個ipod觸摸屏來指導用戶該做什麼,然後幾乎立即在電腦屏幕上顯示他們輸入的結果。我想知道如何運作,如果有人有任何想法,請隨時分享!如何使用vb.net將消息從一臺計算機發送到另一臺計算機?

其他細節:

  • 我有很多與vb.net,命令行功能和VBScript的經驗。

  • 我目前運行的是Windows 7專業版64位

  • 我有一個外部的藍牙迷你適配器。

  • 我希望這可以(如果可能)類似於那些ipod/iphone應用程序,讓您通過wifi同步控制筆記本電腦光標;因爲沒有必要的設置,並且不需要額外的軟件。 (例如: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 

但是我想在沒有任何批處理文件的情況下做到這一點,因爲我不想在另一端設置任何東西。

謝謝!

它可能與插座或端口有任何關係嗎?


+0

我還想說,我不知道我怎麼會去尋找IP地址或鑑定爲其他計算機某種其他形式。例如,在我說「SERVER:localhost」的命令提示符中,我如何將它發送到本地網絡中的特定計算機? (在vb.net和命令提示符下) – daniel11

+0

在命令行中嘗試'msg/server:<服務器名稱/地址>「您的消息」'。如果它適合你,你可以很容易地從vb.net執行這個命令 –

+4

我很確定,當你說「沒有人找到解決方案」時,這意味着你只是沒有找到解決方案。 –

回答

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列表,也可以讓每臺聯網的計算機「訂閱」到您的程序,如果它靜態託管在一個盒子上的話。出於我的目的,當我使用此代碼時,主機進程位於已知的服務器上。希望接收消息的客戶端進程向主機發送一條快速消息,然後主機會記錄該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) 
+0

這就是天才!這正是我正在尋找的,所以如果我想提出一個當前連接到同一個網絡的計算機列表(和它們的遠程IP地址),我該怎麼辦?與命令提示符函數「netstat」類似,只有不重複,每臺計算機只有一個條目。 – daniel11

+0

http://forums.techarena.in/windows-vista-network/978944.htm – Zhais

+0

此外,即時測試您的代碼,以及它說「my.settings.commport」我在哪裏取代commport?因爲它說「'commport'不是'windowsapplication1.my.mysettings'的成員'」 – daniel11

相關問題