|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.04.2010, 19:40 | #1 |
Форумчанин
Регистрация: 26.03.2010
Сообщений: 538
|
Беспредел с передачей строк
функция отправляющая строку на сервер:
void send_data(SOCKET client,string data){ char buf_size[100]; ltoa(sizeof(data),buf_size,10); send(client,buf_size,100,0); //=======size of data char *buf; buf=(char *)malloc(sizeof(data)); memcpy(&buf,&data,sizeof(data)); send(client,buf,sizeof(data),0); cout<<"buf "<<buf<<endl; free(buf); } Принимаем строку string recv_data(SOCKET client){ string data; char *buf_size; buf_size=(char *)malloc(100); recv(client,buf_size,100,0); int size=atol(buf_size); char *buf; buf=(char *)malloc(size); recv(client,buf,size,0); memcpy(&data,&buf,size); cout<<buf<<endl; free(buf); return data; } Вышеупомянутые функции используются для передачи на сервер полей объекта Message : class Message{ protected: string message; string from; string target; SOCKET client_from; public: Message(); Message(string& cl_from,string& cl_to,string& mess,SOCKET& sock_from); Message(const Message& mes); Message& operator =( Message&); string get_from(); string get_target(); string get_mess(); SOCKET get_socket(); int get_from_length(); int get_target_length(); int get_message_length(); ~Message(); }; Функция, передающая Message void UploadMess( Message mes,SOCKET client){ string froms,targ,mess; froms=""; targ=""; mess=""; froms=froms.append(mes.get_from()); targ=targ.append(mes.get_target()); mess=mess.append(mes.get_mess()); send_data(client,froms); send_data(client,targ); send_data(client,mess); } принимающая Message : Message RecvMess( SOCKET client){ string froms, targ, mess; froms=recv_data(client); cout<<froms<<endl; targ=recv_data(client); cout<<targ<<endl; mess=recv_data(client); cout<<mess<<endl; Message messag(froms,targ,mess,client); return messag; } Проблема в следующем: при копировании строки в память к ней добавляются посторонние символы, а при чтении строки из буфера на сервере вообще творится беспредел, а потом он вылетает
Единственный способ стать умнее - играть с более умным противником.
Последний раз редактировалось Sam Gold; 28.04.2010 в 20:46. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема с передачей файла | BleStaR | C++ Builder | 1 | 15.02.2010 20:37 |
Проблема с передачей значения в функцию | steklyashka | Помощь студентам | 3 | 19.11.2009 22:19 |
На Украине реально беспредел творится? | Hallo | Свободное общение | 126 | 25.12.2008 10:37 |
Проблема с передачей данных методом POST | Aiden | Работа с сетью в Delphi | 0 | 21.09.2008 21:11 |
Проблема с передачей куки | arwm | Работа с сетью в Delphi | 7 | 28.12.2007 23:44 |