2015-11-17 60 views
0

作爲每MSDN我們如何在C#中使用TcpListener發送數據?

的的TcpListener類提供偵聽和接受阻斷同步模式傳入連接請求的簡單方法。

我的團隊負責人要求使用TcpListener發送數據。有沒有什麼辦法或切實可行receive以及send使用TCPListerner的數據?

我已經知道如何使用TCPListener接收數據,不知道如何使用相同的數據發送數據。我知道TCPClient可以用來發送數據,但我們的團隊負責人想要使用TCPListerner來完成。

請讓我知道您的意見,並讓我知道,如果它是可行的一些示例代碼。

+0

你的意思發送回覆到服務器? http://stackoverflow.com/questions/5589605/how-to-send-a-hello-to-server-and-reply-a-hi看看是否有幫助 – User2012384

+0

請從我的領導看到這條線''\t它會使用TCPListner,以便在發送數據時它是服務器。「所以你可能是對的,它的回覆 – Gaurav123

+0

'TcpListener'接受連接 - 一旦連接建立,數據就可以雙向流動。您只需將數據寫入流中......您不清楚要問什麼。 –

回答

4

不是。 TcpListener的目的是爲了接受 a 新的連接。

但是,您從TcpListener(一旦建立連接)獲得的流對象可用於讀寫。

在這裏尋找更多詳情:

https://msdn.microsoft.com/en-us/library/system.net.sockets.tcplistener%28v=vs.110%29.aspx

using System; 
using System.IO; 
using System.Net; 
using System.Net.Sockets; 
using System.Text; 

class MyTcpListener 
{ 
    public static void Main() 
    { 
    TcpListener server=null; 
    try 
    { 
     // Set the TcpListener on port 13000. 
     Int32 port = 13000; 
     IPAddress localAddr = IPAddress.Parse("127.0.0.1"); 

     // TcpListener server = new TcpListener(port); 
     server = new TcpListener(localAddr, port); 

     // Start listening for client requests. 
     server.Start(); 

     // Buffer for reading data 
     Byte[] bytes = new Byte[256]; 
     String data = null; 

     // Enter the listening loop. 
     while(true) 
     { 
     Console.Write("Waiting for a connection... "); 

     // Perform a blocking call to accept requests. 
     // You could also user server.AcceptSocket() here. 
     TcpClient client = server.AcceptTcpClient();    
     Console.WriteLine("Connected!"); 

     data = null; 

     // Get a stream object for reading and writing 
     NetworkStream stream = client.GetStream(); 

     int i; 

     // Loop to receive all the data sent by the client. 
     while((i = stream.Read(bytes, 0, bytes.Length))!=0) 
     { 
      // Translate data bytes to a ASCII string. 
      data = System.Text.Encoding.ASCII.GetString(bytes, 0, i); 
      Console.WriteLine("Received: {0}", data); 

      // Process the data sent by the client. 
      data = data.ToUpper(); 

      byte[] msg = System.Text.Encoding.ASCII.GetBytes(data); 

      // Send back a response. 
      stream.Write(msg, 0, msg.Length); 
      Console.WriteLine("Sent: {0}", data);    
     } 

     // Shutdown and end connection 
     client.Close(); 
     } 
    } 
    catch(SocketException e) 
    { 
     Console.WriteLine("SocketException: {0}", e); 
    } 
    finally 
    { 
     // Stop listening for new clients. 
     server.Stop(); 
    } 


    Console.WriteLine("\nHit enter to continue..."); 
    Console.Read(); 
    } 
} 
相關問題