使用c#在两台计算机之间进行通信

时间:2013-12-08 19:12:52

标签: c# c sockets

所以,我正在尝试使用C#构建某种远程控制应用程序,但我对Socket Programming一无所知。我做了很多搜索,但我找不到我想要的东西。

我唯一需要的是通过互联网在两台计算机之间进行通信,我只需要一种方法来发送和接收一个简单的字符串变量,如“机器人:移动”,但我无法弄清楚我是怎么做的如果有人可以帮助我,我会非常高兴。

P.S。我还没有开始这个项目,所以无论是windows窗体还是控制台应用程序都无关紧要

先谢谢

更新:

感谢您的帮助,我学会了如何使用WCF并且我设法创建了我想要的应用程序但不幸的是它只能在本地工作,我没有静态IP地址或Windows / IIS托管来通过互联网托管它。我唯一拥有的是Linux / Apache主机,我尝试过单声道,这是不行的。所以我想知道我的问题是否有任何不同的解决方案。

P.S。是否有其他编程语言如C或JAVA可以实现这一目标? 如果是这样,你能给我一个关于如何做的链接吗?

4 个答案:

答案 0 :(得分:3)

更新:5年后

我现在会使用带有protbuf序列化的gRPC。这将允许您为客户端和服务器使用不同的语言。 ProtoBuf也是完全兼容的(支持向后和向前兼容)。 这是_“入门”)文档:https://grpc.io/docs/quickstart/csharp.html


我认为最适合您的解决方案是使用WCF服务。 http://msdn.microsoft.com/en-us/library/ms734691(v=vs.110).aspx 以下是上述链接的简短示例:

// Define a service contract.
[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")]
public interface ICalculator
{
    [OperationContract]
    double Add(double n1, double n2);
    // Other methods are not shown here.
}

和客户

// Create a client object with the given client endpoint configuration.
CalculatorClient calcClient = new CalculatorClient("CalculatorEndpoint"));
// Call the Add service operation.
double value1 = 100.00D;
double value2 = 15.99D;
double result = calcClient.Add(value1, value2);
Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result);

重点是你有一个契约(接口)和一个实现这个接口的服务(类)。然后,当此服务托管在Web,表单或控制台应用程序中时,您可以从另一个应用程序添加对该服务的引用,这无关紧要 - 有多种传输(绑定)可用。 以下是MSDN http://msdn.microsoft.com/en-us/library/ms731067(v=vs.110).aspx

上的入门部分链接

答案 1 :(得分:0)

在C#中,有多种方法可以在组件之间进行通信:

  1. 套接字
  2. 使用.NET Remoting [废弃]
  3. 使用WCF
  4. 使用WebClient
  5. 使用哪一项取决于项目的目的。我建议阅读每一个,并决定哪个适用于您的问题。

答案 2 :(得分:0)

如果计算机在同一网络上,我会使用TCPListenerTCPClient以及StreamReaderStreamWriter类来建立通信。它们需要IP地址和端口进行通信。

如果您可以解决防火墙问题,他们也可以通过互联网进行通信。

答案 3 :(得分:-1)

相关问题