所以,我正在尝试使用C#构建某种远程控制应用程序,但我对Socket Programming一无所知。我做了很多搜索,但我找不到我想要的东西。
我唯一需要的是通过互联网在两台计算机之间进行通信,我只需要一种方法来发送和接收一个简单的字符串变量,如“机器人:移动”,但我无法弄清楚我是怎么做的如果有人可以帮助我,我会非常高兴。
P.S。我还没有开始这个项目,所以无论是windows窗体还是控制台应用程序都无关紧要
先谢谢
更新:
感谢您的帮助,我学会了如何使用WCF并且我设法创建了我想要的应用程序但不幸的是它只能在本地工作,我没有静态IP地址或Windows / IIS托管来通过互联网托管它。我唯一拥有的是Linux / Apache主机,我尝试过单声道,这是不行的。所以我想知道我的问题是否有任何不同的解决方案。
P.S。是否有其他编程语言如C或JAVA可以实现这一目标? 如果是这样,你能给我一个关于如何做的链接吗?
答案 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#中,有多种方法可以在组件之间进行通信:
使用哪一项取决于项目的目的。我建议阅读每一个,并决定哪个适用于您的问题。
答案 2 :(得分:0)
如果计算机在同一网络上,我会使用TCPListener
和TCPClient
以及StreamReader
和StreamWriter
类来建立通信。它们需要IP地址和端口进行通信。
如果您可以解决防火墙问题,他们也可以通过互联网进行通信。
答案 3 :(得分:-1)