Member 13570338 Ответов: 2

Привет каждому телу , я сделал программу cleint server, но я не могу отправить и получить только одно сообщение, это сервер и клиент


Клиент:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using System.Net.Sockets;
using System.Threading;
using System.Net;
using System.IO;


namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        TcpClient tcpc = new TcpClient();
        ASCIIEncoding asce = new ASCIIEncoding();
        NetworkStream ns;
        BinaryReader br;
        BinaryWriter bw;

        public void cli()
        {
            try
            {
                tcpc.Connect(IPAddress.Parse("127.0.0.1"), 5000);

                ns = tcpc.GetStream();

                br = new BinaryReader(ns);
                bw = new BinaryWriter(ns);
                string st = br.ReadString();
                MessageBox.Show("srever send this message:" + st);

            }

            catch { }
        }
        
        public Form1()
        {
            
            InitializeComponent();
            Thread thread = new Thread(new ThreadStart(cli));
            thread.Start();
            
            
        }

        

        private void button1_Click(object sender, EventArgs e)
        {
            bw.Write(textBox1.Text);
                     
        }
   
        }

}

=====================================

Сервер:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net.Sockets;
using System.IO;
using System.Threading;
using System.Net;

namespace WindowsFormsApplication2
{
    public partial class server : Form
    {


        BinaryReader br;
        BinaryWriter bw;
        Socket soc;
        NetworkStream ns;
        public void dolisten(){
            try
            {
                IPAddress ip = IPAddress.Parse("127.0.0.1");
                TcpListener tcpl = new TcpListener(ip, 5000);
                tcpl.Start();
                soc = tcpl.AcceptSocket();

                ns = new NetworkStream(soc);
                br = new BinaryReader(ns);
                bw = new BinaryWriter(ns);
                string ss = br.ReadString();
                MessageBox.Show("client send this message" + ss);
            }
            catch             {
                MessageBox.Show("error");
            }
                      

        }
        
        public server()
        {
            InitializeComponent();
            Thread thread = new Thread(new ThreadStart(dolisten));
            thread.Start();
       
        }

       

        private void button1_Click(object sender, EventArgs e)
        {

            string sss = textBox1.Text;
            bw.Write(sss);
            
        }   
    
    }
}


Что я уже пробовал:

это .close() ?
я попробовал это сделать, но VS дал мне ошибку, что не заканчивает поток или что-то в этом роде!!!

Richard MacCutchan

"или нечто подобное"
Пожалуйста, не ждите, что мы догадаемся, что это за сообщение; предоставьте точный текст, и объясните, где это происходит.

2 Ответов

Рейтинг:
0

CPallini

Он завершается, потому что вы разработали его для этого: как клиентские, так и серверные потоки завершаются при получении первых входных данных. Таким образом, после первого приема данных принимающая конечная точка больше не активна.


Рейтинг:
0

Member 11143054

прослушивание соединения в то время как(true) на сервере