2009-11-26 57 views
0

我想編寫一個程序來使用tcpClient從指定的IP和端口號接收一些數據。我第一次使用while(true)。我的朋友告訴我用線代替while循環。所以我照他說的做了。線程接收來自IP和端口的數據

public static void receiveThread() 
{ 
    TcpClient tcpClient = new TcpClient(); 
    try 
    { 
     tcpClient.Connect(ipAddress, incPort); 
     Console.WriteLine("Connection accepted ..."); 
    } 
    catch (Exception e) 
    { 
     Console.WriteLine(e + "\nPress enter to exit..."); 
     Console.ReadKey(); 
     return; 
    } 
    NetworkStream stream = tcpClient.GetStream(); 
    StreamReader incStreamReader = new StreamReader(stream); 

    try 
    { 
     data = incStreamReader.ReadLine(); 
     Console.WriteLine("Received data: {0}", data); 
    } 
    catch (Exception e) 
    { 
     Console.WriteLine(e + "\nPress enter to exit..."); 
    } 
} 

工作正常,但不如我希望它的工作。當我運行程序並向其發送「Hello world」字符串時,它會收到它,然後完成作業並退出。我想保持線程爲更多的傳入數據,但我不知道該怎麼做。也許有人對我有一個線索如何去做?

要使用此

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

public class Program 
{ 
public static string ipAddress = "127.0.0.1"; 
public static int listenerPort = 6600; 
public static string message; 

static void Main(string[] args) 
{ 
    TcpListener tcpListener = new TcpListener(IPAddress.Parse(ipAddress),listenerPort); 
    tcpListener.Start(); 

    Socket socket = tcpListener.AcceptSocket(); 
    Console.WriteLine("Connection accepted..."); 
    while (true) 
    { 
     if (socket.Connected) 
     { 
      NetworkStream networkStream = new NetworkStream(socket); 
      StreamWriter streamWriter = new StreamWriter(networkStream); 

      message = Console.ReadLine(); 
      streamWriter.WriteLine(message); 
      streamWriter.Flush(); 
     } 
    } 
} 

回答

1

您的朋友發送數據Im不得不使用一個線程,以便主應用程序沒有鎖定。現在您已經創建了一個新線程,您可以像在以前那樣在該線程中使用一個while循環。

+0

權,謝謝您的回答。 – Allek 2009-11-26 18:47:58

相關問題