帮助您通过TCP / IP或LAN发送文本

时间:2010-10-23 20:41:36

标签: vb.net visual-studio-2008 vb6 communication tcp

嘿所有我想尝试从虚拟机(VMWARE)向本地计算机发送文本消息,以便我可以点击VM中的按钮并让它在本地执行某些操作。

无论如何使用VB6或VB.net通过IP,TCP / IP,LAN发送文本?我正在看 net send 发送一些东西,但它似乎对我不起作用(以及它似乎为你发送的每个文本弹出一个对话框)。我已经尝试过了:

http://www.codeproject.com/KB/vb/CfSimpleSendComp.aspx

但它在我的电脑上似乎根本不起作用?我已经尝试了机器的IP以及计算机的名称。也许在VB中 .NET Remoting

如果有其他方法可以做我想做的事情,有人能告诉我吗?

谢谢!

大卫

3 个答案:

答案 0 :(得分:1)

您需要一个客户端和一个服务器,每端都有一个。这些可以通过TCPIP(TCP或UDP),Microsoft网络(命名管道,Mailslots)或任何您拥有的通信进行通信。一些选项取决于两台机器运行的操作系统,但是既然你提到了NET SEND,我们可能会假设某种类型的Windows。

Messenger服务在Windows NT(Vista,Windows 7)的更高版本中消失,因此它不是最佳选择。还有其他Mailslots信使以及许多UDP信使。

真正的问题是,您只需按一下按钮即可执行哪些操作。哎呀,你可以很容易地运行Telnet,如果它给了你你想要的东西。

不要忘记您可能必须打开防火墙才能使用这些防火墙。

VB中没有.Net Remoting,你必须指的是VB.Net。这是一个远程对象调用技术,可能不是你想要的。

您可能会更快地选择一个开发工具集并使用它为TCP或UDP套接字提供的任何内容。

答案 1 :(得分:1)

有几种方法。最好的方法取决于您如何定义“短信”。

如果您只需要按一个按钮并在远程计算机上运行命令,我将在Process对象中运行PsExec。俗气但有效。类似的东西:

Using p as new Process()
    p.StartInfo.FileName = "c:\path\to\PsExec.exe"
    p.StartInfo.Arguments = "\\RemoteComputerName RemoteCommand.exe"
    p.Start()
End Using

如果您需要使用自定义协议进行双向通信,我会使用WCFTCPListener and TCPClient类来创建您自己的套接字服务器和客户端。

我会远离远程。

答案 2 :(得分:1)

您也可以考虑使用Eneter Messaging Framework 它重量轻,易于使用。

对不起,我不熟悉VB语法,但在C#中整个实现 在这里:(您可以将代码复制粘贴到项目中,包括 Eneter.Messaging.Framework.dll 并将IP更改为您的。)

服务器侦听字符串消息。

using System;
using Eneter.Messaging.EndPoints.StringMessages;
using Eneter.Messaging.MessagingSystems.MessagingSystemBase;
using Eneter.Messaging.MessagingSystems.TcpMessagingSystem;

namespace StringReceiver
{
    class Program
    {
        static void Main(string[] args)
        {
            // Create Tcp based messaging.
            IMessagingSystemFactory aTcpMessaging = new TcpMessagingSystemFactory();
            IInputChannel anInputChannel = aTcpMessaging.CreateInputChannel("127.0.0.1:7091");

            // Create string message receiver
            // Note: it is possible to receiver typed messages too.
            IStringMessagesFactory aStringMessagesFactory = new StringMessagesFactory();
            IStringMessageReceiver aStringMessageReceiver = aStringMessagesFactory.CreateStringMessageReceiver();
            aStringMessageReceiver.MessageReceived += StringMessageReceived;

            // Attach the input channel to the string message receiver
            // and start listening.
            Console.WriteLine("String sercer is listening.");
            aStringMessageReceiver.AttachInputChannel(anInputChannel);
        }

        // Processing messages.
        static void StringMessageReceived(object sender, StringMessageEventArgs e)
        {
            Console.WriteLine("Received message: " + e.Message);
        }
    }
}

客户端发送字符串消息:

using Eneter.Messaging.EndPoints.StringMessages;
using Eneter.Messaging.MessagingSystems.MessagingSystemBase;
using Eneter.Messaging.MessagingSystems.TcpMessagingSystem;

namespace StringMessageSender
{
    class Program
    {
        static void Main(string[] args)
        {
            // Create Tcp based messaging.
            IMessagingSystemFactory aTcpMessaging = new TcpMessagingSystemFactory();
            IOutputChannel anOutputChannel = aTcpMessaging.CreateOutputChannel("127.0.0.1:7091");

            // Create string message receiver
            // Note: it is possible to receiver typed messages too.
            IStringMessagesFactory aStringMessagesFactory = new StringMessagesFactory();
            IStringMessageSender aStringMessageSender = aStringMessagesFactory.CreateStringMessageSender();

            // Attach the output channel to the string message sender
            // so that we can send messages via Tcp to desired Ip address.
            aStringMessageSender.AttachOutputChannel(anOutputChannel);

            // Send message.
            aStringMessageSender.SendMessage("Hello world.");
       }
   }

}

Eneter Messaging Framework可以在www.eneter.net下载。

如果您想获得更多技术信息,请访问:www.eneter.net/OnlineHelp/EneterMessagingFramework/Index.html 更多示例:eneter.blogspot.com