2010-10-23 2 views
0

Salut à tous j'essaie d'envoyer un message texte depuis une machine virtuelle (VMWARE) vers ma machine locale pour que je puisse appuyer sur un bouton dans la VM et que je fasse quelque chose le local. Y at-il un moyen d'envoyer un texte via une adresse IP, TCP/IP, LAN en utilisant VB6 ou VB.net? Je regardais le net envoyer pour envoyer quelque chose, mais cela ne semble pas fonctionner pour moi (et il semble y avoir une boîte de dialogue pour chaque texte que vous envoyez). Je l'ai déjà essayé ceci:Aide pour l'envoi de texte TCP/IP ou LAN

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

Mais il ne semble pas fonctionner du tout sur mon ordinateur? J'ai essayé à la fois l'adresse IP de la machine et le nom de l'ordinateur. Peut-être .NET Remoting dans VB?

Quelqu'un pourrait-il me faire savoir s'il y a d'autres façons de faire ce que je voudrais faire?

Merci!

David

Répondre

1

Vous pouvez également envisager d'utiliser Eneter Messaging Framework.
Il est léger et très facile à utiliser.

Je suis désolé, je ne suis pas familier avec la syntaxe VB, mais en C# la mise en œuvre toute est ici: (Vous pouvez copier coller le code dans votre projet, inclure Eneter.Messaging.Framework.dll et changer la IP au vôtre.)

Le serveur écoute les messages de chaîne.

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); 
     } 
    } 
} 

Le client envoie les messages chaîne:

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 peut être téléchargé à l'adresse www.eneter.net.

Si vous souhaitez obtenir de plus amples informations techniques: www.eneter.net/OnlineHelp/EneterMessagingFramework/Index.html Autres exemples: eneter.blogspot.com

+0

Merci d'avoir pris le temps d'écrire tout ce que dehors, Ondrej. Cependant, je viens d'utiliser du code VB.net. – StealthRT

1

Vous avez besoin d'un client et un serveur, l'un d'entre eux à chaque extrémité. Ceux-ci pourraient communiquer sur TCPIP (TCP ou UDP), Microsoft Networking (nommé Pipes, Mailslots), ou tout ce que vous avez. Certaines options dépendent du système d'exploitation utilisé par les deux machines, mais puisque vous avez mentionné NET SEND, nous pouvons probablement supposer que certaines fonctionnalités de Windows sont utilisées.

Le service de messagerie est disparu dans les versions ultérieures de Windows NT (Vista, Windows 7), ce n'est donc pas la meilleure option. Il y a d'autres messagers Mailslots mais aussi beaucoup de messagers UDP.

La vraie question est de savoir quelle action vous voulez effectuer "en appuyant sur un bouton". Heck, vous pourriez facilement exécuter Telnet si cela vous a donné ce que vous étiez après. N'oubliez pas que vous devrez peut-être ouvrir des pare-feu pour que cela fonctionne. .Net Remoting n'est pas disponible en VB, vous devez désigner VB.Net. C'est une technologie d'invocation d'objet à distance et probablement pas ce que vous voulez.

Vous obtiendrez probablement un résultat plus rapidement en choisissant un ensemble d'outils de développement et en utilisant tout ce qu'il offre pour les sockets TCP ou UDP.

1

Il existe plusieurs façons. La meilleure façon dépend de la façon dont vous définissez le «message texte».

Si vous avez juste besoin d'appuyer sur un bouton et d'exécuter une commande sur une machine distante, je lancerais PsExec dans l'objet Process. Cheesy mais efficace. Quelque chose comme:

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

Si vous avez besoin de communication bidirectionnelle avec un protocole personnalisé, j'utiliser WCF ou TCPListener and TCPClient classes pour créer votre propre serveur de socket et le client.

Je resterais loin de l'accès à distance.