простое клиент/сервер приложение

Тема в разделе ".NET", создана пользователем F1ztech, 2 окт 2007.

  1. F1ztech

    F1ztech Гость

    необходимо создать простое приложение клиент сервер, такое что, сервер всегда ожидает соединение и потом выводит на консоль присланный клиентом текст.
    код сервера:
    Код (Text):
             static void Main(string[] args)
    {
    while (true)
    {
    TcpListener listener = new TcpListener(new IPEndPoint(IPAddress.Parse("192.168.0.2"), 9001));
    listener.Start();

    Console.WriteLine("Waiting for connection...");
    TcpClient client = listener.AcceptTcpClient();

    NetworkStream stream = client.GetStream();
    byte[] buf = new byte[client.ReceiveBufferSize];
    int bRead = stream.Read(buf, 0, buf.Length);
    string str = Encoding.ASCII.GetString(buf, 0, bRead);
    Console.WriteLine(str);
    client.Close();
    listener.Stop();
    }
    }
    код клиента(он состоит из 2-ух кнопок установка соединения и отправка текста введенного в текстбокс):
    Код (Text):
            TcpClient serv;
    NetworkStream stream;

    private void button1_Click(object sender, EventArgs e) //отправка
    {
    byte[] bytes = Encoding.ASCII.GetBytes(textBox1.Text);
    stream.Write(bytes, 0, bytes.Length);
    }

    private void button2_Click(object sender, EventArgs e)
    {
    serv = new TcpClient(new IPEndPoint(IPAddress.Parse("192.168.0.2"), 9000));
    serv.Connect(new IPEndPoint(IPAddress.Parse("192.168.0.2"), 9001));
    stream = serv.GetStream();
    }
    когда я нажимаю на клиенте отправить, то в первый раз все приходит и выводится а при повторном нажатии ничего не происходит.Никак не пойму почему...
     
  2. LuMee

    LuMee Well-Known Member

    Регистрация:
    2 май 2006
    Сообщения:
    477
    Симпатии:
    0
    Может имеет смысл вот этот код:
    Код (Text):
    TcpListener listener = new TcpListener(new IPEndPoint(IPAddress.Parse("192.168.0.2"), 9001));
    listener.Start();
    вынести из цикла? Закрытие listener'а, соот-но, тоже
     
  3. Pasha

    Pasha Гость

    Для: F1ztech
    Посмотри в MSDN на пример кода по TcpListener.AcceptTcpClient. Там все подробно расписано.
     
  4. F1ztech

    F1ztech Гость

    Для: LuMee
    если его вынести то тоже 2-ой раз не отпраляется
    Для: Pasha
    в мсдне смотрел там так как предлагает товарищь LuMee, но повторно все равно не отправляется(
     
  5. Pasha

    Pasha Гость

    Для: F1ztech
    По твоему коду непонятно что именно ты подразумеваешь под "нажимаю на клиенте отправить". Сделай одну кнопку, все заработает.
     
  6. F1ztech

    F1ztech Гость

    когда делаю одну кнопку то при повторном нажатии на нее пишет: "Обычно разрешается одно использование адреса сокета (протокол/сетевой адрес/порт)"
     
  7. F1ztech

    F1ztech Гость

    вопрос решен, проблема была в том что надо было создавать tcpclient, не указывая в конструкторе порт и адрес. Правда не понял почему...Если кто-нить объяснит буду благодарен.
     
Загрузка...

Поделиться этой страницей