Как я могу решить эту проблему программирования на C#?
У меня есть небольшой сервер, который принимает и отправляет сообщение обратно клиенту.
это клиентская сторона
когда я открою клиент он подключится к серверу через Connect()
public Form1() { InitializeComponent(); Connect(); CheckForIllegalCrossThreadCalls = false; }
это моя связь
void Connect() { ipep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9999); server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); try { server.Connect(ipep); } catch (SocketException e) { MessageBox.Show(Convert.ToString(e)); } Thread listen = new Thread(Receive); listen.IsBackground = true; ; listen.Start(); }
и у меня есть такой прием
void Receive() { datarec = new byte[1024]; try { while (true) { string StringData; rec = server.Receive(datarec); StringData = Encoding.ASCII.GetString(data, 0, rec); txtShow.Text = StringData; } } catch { Close(); } }
и я посылаю данные через кнопку Отправить способ
void Send(string s) { data = new byte[1024]; data = Encoding.ASCII.GetBytes(s); server.Send(data, data.Length, SocketFlags.None); }
это серверная часть
у меня есть потоковый сервер
public static void Process(Socket client) { byte[] data = new byte[1024]; int recv; string dataInput; IPEndPoint clientep = (IPEndPoint)client.RemoteEndPoint; Console.WriteLine("Connected with {0} at port {1}", clientep.Address, clientep.Port); while (true) { try { recv = client.Receive(data); dataInput = Encoding.ASCII.GetString(data, 0, recv); Console.WriteLine(dataInput); client.Send(data); } catch (SocketException e) { Console.WriteLine(e); } } }
сервер получает сообщение, но когда он отправляет сообщение обратно, он имеет ошибку "существующее соединение было принудительно закрыто удаленным хостом"
Ребята, не могли бы вы сказать мне, где я ошибся и как я могу это исправить?
Извините, что пропустил кнопку "Отправить". Вот оно
private void button1_Click(object sender, EventArgs e) { string s = txtText.Text; Send(s); }
Что я уже пробовал:
Я искал эту ошибку в течение 2 дней, но до сих пор не понимаю, как ее исправить. Можете ли вы, ребята, сказать мне или дать мне источник, где я могу найти, как это исправить ? большое спасибо