0

指定された ip とポート番号から tcpClient を使用してデータを受信するプログラムを作成したいと思います。初めてwhile(true)を使用して実行しました。私の友人は、while ループの代わりにスレッドを使用するように私に言いました。だから私は彼の言うとおりにした。

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();
        }
    }
}
4

2 に答える 2

2

TCPClient オブジェクトのこのプロパティを見てください。

http://msdn.microsoft.com/en-us/library/system.net.sockets.tcpclient.connected.aspx

あなたはそれをそのまま使うことができます

while(tcpClient.Connected)
{
    // do something while conn is open
}
于 2009-11-26T18:33:04.560 に答える
1

あなたの友人はあなたにスレッドを使用させたので、あなたのメインアプリケーションはロックされませんでした。新しいスレッドを作成したので、以前に行っていたように、そのスレッド内で while ループを使用できます。

于 2009-11-26T18:32:31.390 に答える