0

TCP サーバーを「複数の」TCP クライアントに接続しようとしています。

私のプロジェクトは基本的に 2 つのアプリケーションであり、3 層モデルのように設計されています。各アプリケーションのデータ層では、ソケット接続が必要なため、あるアプリケーションから別のアプリケーションにデータ (文字列値) を送信できます。ソケット接続 (基本的には同じクライアント) で送信したいロジック層に複数のメソッドがあるため、TCP サーバーに問題があります。TCP クライアントは 1 つしか受け付けません (何らかの理由でわかりません)。 .

サーバーが接続を閉じないように、ある種のループが必要ですか?

私は TCP プログラミングにかなり慣れていないので、プロジェクトを進めるための助けを得ることができてとてもうれしく思います。

これは私の TCP クライアントのコードです。

public class Tx_Data
{
    const int PORT = 9000;

    private TcpClient clientSocket;

    public Tx_Data()
    {
        Console.WriteLine("Client startet");
        clientSocket = new TcpClient();
        clientSocket.Connect("192.168.122.169", 9000);
        Console.WriteLine("Forbindelse oprettet");
    }

    public void sendDataTCP(string puls, string QT, string QTc)
    {
        NetworkStream outToServer = clientSocket.GetStream();
        string line = "Puls: " + puls + ", QT: " + QT + ", QTc: "+ QTc;
        LIB.writeTextTCP(outToServer, line);
        outToServer.Flush();
    }

}

ロジック層メソッドの 1 つで sendDataTCP メソッドを呼び出すと、次のようになります。

  public void sendData()
    {
        Tx_Data tD = new Tx_Data();
        string puls = beregnPuls().ToString();
        string QT = beregn_QT().ToString();
        string QTc = beregn_QTC().ToString();
        tD.sendDataTCP(puls,QT,QTc);
    }

データを受信する私の TCP サーバーは、次の atm のようになります。

  public class Rx_Alarm
{

    const int PORT = 9000;

    public Rx_Alarm()
    {
        TcpListener serverSocket = new TcpListener(IPAddress.Any, 9000);
        TcpClient clientSocket = default(TcpClient);
        serverSocket.Start();
        clientSocket = serverSocket.AcceptTcpClient();
        Console.WriteLine(">> Accept connection from client");


        NetworkStream io = clientSocket.GetStream();
        Console.WriteLine(LIB.readTextTCP(io));
    }
}
4

1 に答える 1