Автор
|
Тема: Передача файла через WinSock
|
andrewag |
опубликован 17-04-2001 17:23 MSK
Люди! Как передавать файл через сокеты. Возникли затруднения: похоже, посылать можно не все символы (0..255), а только некоторые. Что посоветуете. Спасибо
|
purpe
|
опубликован 17-04-2001 17:31 MSK
первый раз такое слышу :)ты б лучше описал кусочек программы, которым ты пытаешься отправить файл (функции, классы и т.д.)
|
OlegN
|
опубликован 17-04-2001 17:36 MSK
Все зависит от протокола верхнего уровня (FTP, HTTP, SMTP), который ты будешь использовать для передачи, а через сокеты используя TCP/IP ты передаешь/получаешь БАЙТЫ, а не символы. |
andrewag
|
опубликован 17-04-2001 17:40 MSK
Народ! Не загоняйтесь! через recv мы получаем буффер текста, при расколбашивании которого мы и получаем эти самые БАЙТЫ. |
purpe
|
опубликован 17-04-2001 18:00 MSK
ну так получается, что твои символы где-то после recv пропадают :)дальше-то ты чем обрабатываешь полученные байты ?
|
DEiL
|
опубликован 17-04-2001 21:17 MSK
блин, лол :)) 2andrewag : вот тебе сорц, но он из MFC - #define MAX_BUF_LEN 255 void CMySocket::OnReceive(int nErrorCode) { if (nErrorCode == 0) { char *pBuf = new char[MAX_BUF_LEN+1]; int iBufSize = 1; int iRcvd; CString sBuf; iRcvd = Receive(pBuf, iBufSize); if (iRcvd != SOCKET_ERROR) { pBuf[iRcvd] = NULL; sBuf = pBuf; // тут делай с sBuf всё, что хочешь :)) } }; } |
Demo_S
|
опубликован 17-04-2001 21:34 MSK
правильно OlegN писал 0 получаешь байты. а если ты потом задумаешь их с строку превратить, то естественно некоторые(ноль в частности) будут интерпретированы как конец строки, и все, следующие за нулем будут потеряны. |
DEiL
|
опубликован 17-04-2001 21:35 MSK
надеюсь этот сорц запашет :)) |