2013-12-08 137 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),這些解決方案使用起來更容易,並且需要更少的代碼來設置。 –

相關問題