• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы F1ztech
  • Дата начала
F

F1ztech

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

LuMee

Может имеет смысл вот этот код:
Код:
TcpListener listener = new TcpListener(new IPEndPoint(IPAddress.Parse("192.168.0.2"), 9001));
listener.Start();
вынести из цикла? Закрытие listener'а, соот-но, тоже
 
P

Pasha

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

F1ztech

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

Pasha

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

F1ztech

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

F1ztech

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!