2013-12-08 74 views
1

所以,我想用C#构建某种远程控制应用程序,但我不知道什么关于套接字编程。我做了很多搜索,但我找不到我想要的东西。与两台计算机之间的通信与c#

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

P.S.我还没有开始这个项目又那么如果它的Windows窗体或控制台应用程序提前

感谢不要紧

更新:

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

P.S.是否有另一种编程语言,如C或JAVA,使这成为可能? 如果是这样你能给我一个关于如何做的链接?

+0

你想使用简单的控制台应用程序来做它吗? – Ikaso

+1

这是一个有点过于宽泛的本网站的问题,可能会被关闭,除非你添加更多关于你的约束和要求的细节[编辑你的问题](http://stackoverflow.com/posts/20457715/edit)。我建议不要直接处理'sockets',而是使用一个隐藏所有这些东西的库来使它更简单,比如[WCF](http://msdn.microsoft.com/en-us/library /ms731082%28v=vs.110%29.aspx)。然而,一旦你选择了一项技术,如果你迷失了或者不理解它的一个方面,你可以随时询问一个关于它的新特定问题。 –

+0

是一个控制台应用程序会很好 – Ashkan

回答

1

我认为你最好的解决方案是使用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

谢谢你的有用答案,我要去尝试WCF。 – Ashkan

0

在C#中,有各种方式为组件之间的通信:

  1. 套接字
  2. 使用.NET Remoting的[过时]
  3. 使用WCF
  4. 使用WebClient

要使用哪一个取决于项目的目的。我建议阅读并确定哪些适用于您的问题。

+0

.NET Remoting在WCF的使用中几乎是标准的,但Remoting已被弃用,不推荐用于新的软件项目。 –

+0

@ScottChamberlain - WCF用于SOA。并非所有应用程序都需要SOA现在,.Net Remoting确实是一种较旧的技术,但我认为它不被弃用。你有没有看到微软的这种说法? – Ikaso

+1

位于[.Net Remoting的MSDN页面]顶部(http://msdn.microsoft.com/zh-cn/library/vstudio/72x4h507%28v=vs.100%29.aspx),以粗体显示:“ ***本主题特定于保留的旧技术,以便与现有应用程序保持向后兼容,不建议用于新开发。现在应使用Windows Communication Foundation(WCF)开发分布式应用程序。***“ –

0

那么如果计算机是我将使用TCPListenerTCPClientStreamReaderStreamWriter类一起建立通信在同一网络上的链接。他们需要IP地址和端口进行通信。

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

+0

老实说,我认为这不是一个好主意,直​​接与TCP(套接字)工作,特别是如果你的新手这样做,很难在第一次尝试时得到正确的答案。对于OP所描述的情况,有很多更好的解决方案可用(.NET本身和免费的第三方librires),这些解决方案使用起来更容易,并且需要更少的代码来设置。 –

相关问题