| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Сокеты в билдере. |
| Автор: olegrolik 25.12.2006, 22:15 |
| Код до тупого прост...: int i,rv; char buf; RichEdit1->Clear(); Update(); SOCKET socket1; WSADATA winSockData; sockaddr_in peer; char ipaddr[25]; sprintf(ipaddr,"%s",Edit4->Text); // MessageBox(NULL,ipaddr,"",MB_OK); unsigned short port; int result,lis; WSAStartup(0x0101, &winSockData); socket1 = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); peer.sin_family = AF_INET; peer.sin_port = htons(7777); peer.sin_addr.s_addr = inet_addr(ipaddr); result = connect(socket1, (sockaddr *) &peer, sizeof(peer)); if (result != 0) { RichEdit1->Lines->Add("Couldn't connect to the server!");; } else { RichEdit1->Lines->Add("Port is open"); } peer.sin_family = AF_INET; peer.sin_port = htons(7777); peer.sin_addr.s_addr = inet_addr("87.242.73.175"); bind(socket1, (sockaddr *) &peer, sizeof(peer)); // не знаю - нужно ли это RichEdit1->Lines->Add(send(socket1,&buf,4096,0)); // Sleep(10); RichEdit1->Lines->Add(send(socket1,&buf,4096,0)); RichEdit1->Lines->Add(send(socket1,&buf,4096,0)); RichEdit1->Lines->Add(send(socket1,&buf,4096,0)); RichEdit1->Lines->Add(send(socket1,&buf,4096,0)); RichEdit1->Lines->Add(send(socket1,&buf,4096,0)); WSACleanup(); closesocket(socket1); } По идее посылаю по адресу 6 раз 4096 байт. В установке соединения проверяю реально ли отсылается 4096*6 байт. В итоге получается, что есть крупное не соответствие (даже при попытке послать 1 раз 4096 байт посылается то 3116 байт, то около 4200). Более того, не все отсылки работают. Первая - всегда, остальные в случайном порядке. Пробовал использовать Sleep() - не помогает. Помогите, пожалуйста, решить проблему. Спасибо |
| Автор: Coder 26.12.2006, 02:46 |
| может char buf[4096]; или память выделить? и еще, как ты инициализируешь buf? в коде не видно что ты отправляешь bind() нужен. а вообще смотри в MSDN: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcecomm5/html/wce50samwinsocksamples.asp |
| Автор: olegrolik 26.12.2006, 11:30 |
| buf у меня инициализируется в самом начале char buf[4096] не решило проблемы... bind()... он у меня есть... Только для чего он? |
| Автор: olegrolik 26.12.2006, 13:49 | ||
Что такое MSDN? Кстати, проблема решается после того, как я уменьшаю размер буфера до 1024, например. |
| Автор: Vyacheslav 26.12.2006, 19:17 | ||
А кто, кстати, обещал, что за один раз отправиться ровно столько, сколько хочется ?
|
| Автор: olegrolik 26.12.2006, 21:55 |
| Ничего себе... Ну тогда подскажите, пожалуйста, как послать и получить точное кол-во информации... |
| Автор: witex 27.12.2006, 01:34 | ||
|