Показать сообщение отдельно

  #1  
Старый 12.07.2008, 01:05
izlesa
Участник форума
Регистрация: 03.01.2008
Сообщений: 156
С нами: 9660439

Репутация: 110
По умолчанию

2SVAROG
Во-первых, это c-style код, несмотря на iostream
Во-вторых ... млин ... слов нету ... за такой код надо расстреливать на месте, и не делать скидок даже на недавность порыва изучения, тк это уже не нубство, а ... я даже не знаю как назвать. Такое впечатление, что ты наискосок просмотрел мануал и забил на него. Чего стоят &buf[0] или брейки в начале ветвления проверки ошибок.

В-третьих, после беглого просмотра этого "творения" выяснилось, что логика "несколькo" другая. Ты не понимаешь что пишешь? Разберись в логике программы, составь алгоритм на бумажке, досконально проверь его и уже тогда переноси его в код.

Я не разбираюсь в плюсах, но помоему подключенный в stdafx.h stdio.h перекрывает iostream.h, поэтому не работает cout.
А вообще основная ошибка в логике. Сервером ты пытаешься отправить строку, но отправляется один байт. Потом ты это количество же пытаешься отправить на сервер. Там, если бы работал cout выводился только один символ.
Т.е. в клиенте надо изменить send так

Код:
 send(my_sock, buff,strlen(buff), 0); // Будет посылать на сервер столько байт, сколько нужно
ЗЫ Внимательней на код посмотрел, сервер нормально отсылает это у тебя в while бардак. Ты что нибудь о приоритетности операций слышал? Или эту главу в книге пролистал? И то что выражение в while будет выполнятся справо налево ни сном ни духом. И следовательно в nsize будет заносится не кол-во полученных байт, а результат выражения != ...

Весь код яркая иллюстрация к тому, как нельзя делать ни в коем разе. До*баться можно к каждой строке.
Бери K&R или Прата и марш изучать язык нормально!
 
Ответить с цитированием