嘿所有我想尝试从虚拟机(VMWARE)向本地计算机发送文本消息,以便我可以点击VM中的按钮并让它在本地执行某些操作。
无论如何使用VB6或VB.net通过IP,TCP / IP,LAN发送文本?我正在看 net send 发送一些东西,但它似乎对我不起作用(以及它似乎为你发送的每个文本弹出一个对话框)。我已经尝试过了:
http://www.codeproject.com/KB/vb/CfSimpleSendComp.aspx
但它在我的电脑上似乎根本不起作用?我已经尝试了机器的IP以及计算机的名称。也许在VB中 .NET Remoting ?
如果有其他方法可以做我想做的事情,有人能告诉我吗?
谢谢!
大卫
答案 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
如果您需要使用自定义协议进行双向通信,我会使用WCF或TCPListener 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