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

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

  1. F1ztech

    F1ztech Гость

    Репутация:
    0
    необходимо создать простое приложение клиент сервер, такое что, сервер всегда ожидает соединение и потом выводит на консоль присланный клиентом текст.
    код сервера:
    Код (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

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

    Pasha Гость

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

    F1ztech Гость

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

    Pasha Гость

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

    F1ztech Гость

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

    F1ztech Гость

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

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