Я хотел бы написать программу для получения некоторых данных с использованием tcpClient с указанным ip и номером порта. В первый раз я сделал это с помощью 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();
}
}
}