Я пытаюсь сделать связь с клиентским сервером с помощью C#. Я заставил клиента и сервер взаимодействовать друг с другом. Но проблема, с которой я столкнулся, заключается в том, как мне прекратить общение?Прекращение связи на клиентском сервере с помощью C#
Условие: сервер всегда должен прослушиваться (когда несколько клиентов присутствуют.) (В настоящее время я использую один клиент). Клиент должен иметь условие остановки или выхода (то есть, когда клиент отправляет «выход», клиент должен прекратить работу, сервер все равно должен слушать других клиентов), когда он завершит передачу данных.
Я новичок в C#. Пробовал поиск в google. но не нашел то, что мне нужно.
Часть моего кода:
Сервер:
try
{
IPAddress addr = IPAddress.Parse("127.0.0.1");
string a = "recieved by server";
TcpListener Receiver = new TcpListener(addr, 1234);
Receiver.Start();
Console.WriteLine("trying to connect to " + addr);
Socket s = Receiver.AcceptSocket();
Console.WriteLine("Connected");
while (true)
{
byte[] b = new byte[100];
int k = s.Receive(b);
char[] chars = new char[b.Length/sizeof(char)];
System.Buffer.BlockCopy(b, 0, chars, 0, b.Length);
string dataReceived = new string(chars);
Console.WriteLine(dataReceived);
byte[] bw = new byte[a.Length * sizeof(char)];
System.Buffer.BlockCopy(a.ToCharArray(), 0, bw, 0, bw.Length);
Console.WriteLine("sending Acknowledgement to client");
s.Send(bw);
}
//Receiver.Stop();
}
Клиент:
try
{
TcpClient TcpC = new TcpClient();
TcpC.Connect("127.0.0.1", 1234);
while (true)
{
Console.WriteLine("enter somethiong to send");
String s = Console.ReadLine();
NetworkStream CStream = TcpC.GetStream();
byte[] bw = new byte[s.Length * sizeof(char)];
System.Buffer.BlockCopy(s.ToCharArray(), 0, bw, 0, bw.Length);
Console.WriteLine("Transmit");
CStream.Write(bw, 0, bw.Length);
if (s == "exit")
{
CStream.Flush();
CStream.Close();
TcpC.Close();
break;
}
byte[] br = new byte[100];
int k = CStream.Read(br, 0, 100);
char[] chars = new char[br.Length/sizeof(char)];
System.Buffer.BlockCopy(br, 0, chars, 0, br.Length);
string ackReceived = new string(chars);
Console.WriteLine(ackReceived);
}
//TcpC.Close();
}
изменил программу Accoding, что сказал Ozmo. Но я понятия не имею о потоках. Можете ли вы привести пример того, как я могу изменить свою программу? –