| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Помогите в работе с Winsock |
| Автор: Ustim 19.12.2005, 17:28 |
| Есть код SOCKET s, s_new; int from_len; char buf[BUF_SIZE]; struct sockaddr_in sin, from_sin; s=socket(AF_INET, SOCK_STREAM,0); if (s == -1) { ShowMessage("Socket ne prisvoen"); }; memset((char*)&sin,'\0',sizeof(sin)); sin.sin_family = AF_INET; sin.sin_addr.s_addr=INADDR_ANY; sin.sin_port = SRV_PORT; if ( (bind(s,(struct sockaddr*)&sin, sizeof(sin))) == -1) { ShowMessage("Ne proshlo svyazivanie"); }; if ((listen(s,3)) == -1) { ShowMessage("ghhghj"); }; while(1) { from_len = sizeof(from_sin); s_new = accept(s, (struct sockaddr *)&from_sin, &from_len); //s_new = accept(s, &from_sin, &from_len); send(s_new,TXT_QUEST,sizeof(TXT_QUEST),0); from_len = recv(s_new, buf, BUF_SIZE,0); Memo2->Lines->Add(buf); //Edit4->Text = buf; // write(1,buf,from_len); shutdown(s_new,0); closesocket(s_new); }; запускается по клику кнопки. Ошибок при компиляции не выдает но зависает в строке s_new = accept(s, (struct sockaddr *)&from_sin, &from_len); сначала писал //s_new = accept(s, &from_sin, &from_len); но выдает ошибку не совместимость типов Помогите, подкажите что делать, заранее благодарен |
| Автор: Artemon 20.12.2005, 11:30 |
| У тебя сокет находится в блокирующем режиме, поэтому и зависает, а вообще это вопрос должен был задаваться в подфоруме "VC++". |
| Автор: TeeT 20.12.2005, 16:41 |
| скорее что-то среднее между CBuilder и WINAPI, у меня тоже такая проблема была - домой приду посмотрю завтра выложу, у меня что-то получилось. Там сперва надо было сделать какуюто инициализацию сокетов вообще (WSASocket-ом), а потом создавать все остальное... |