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

  #4  
Старый 17.06.2009, 20:01
awdrg
Участник форума
Регистрация: 30.01.2009
Сообщений: 196
Провел на форуме:
505362

Репутация: 66
Отправить сообщение для awdrg с помощью ICQ
По умолчанию

Я так и пытался делать. Проблема в том, что если размер буфера чуть больше кол-ва оставшихся байт то он пытается что то читать (около минуты функция висит)
вот кусок кода
PHP код:
#define PORT 80
#define SERVERADDR "forum.antichat.ru" 
char connect()
{
   
WSADATA wd;
   
char buff[256] = "\0";
   
char text[100000] = "\0";
   
char buff2[10000]="GET / HTTP/1.1\r\nHost: forum.antichat.ru\r\nUser-Agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11\r\nAccept-Language: ru,en-us;q=0.7,en;q=0.3\r\nKeep-Alive: 300\r\nConnection: keep-alive\r\n\r\n";
   
printf "TCP Client \n" );
   if ( 
WSAStartup 0x202, &wd ) )
   {
      return 
"[Connection error]";
   }

   
SOCKET sock ;
   
sock=socket AF_INETSOCK_STREAM);
   if  ( 
sock )
   {
       return  
"[Socket error]";
   }

   
sockaddr_in  dest_addr;
   
dest_addr.sin_family=AF_INET;
   
dest_addr.sin_port=htons PORT );
   
HOSTENT    *hst;
   if( 
inet_addr(SERVERADDR) != INADDR_NONE )
       
dest_addr.sin_addr.S_un.S_addr inet_addr(SERVERADDR);
   else if( 
hst=gethostbyname SERVERADDR ) )
       ( ( 
unsigned long   * ) &dest_addr.sin_addr )[0]=((unsigned long** )hst->h_addr_list)[0][0];
   else
   {
      
closesocketsock ) ;
      
WSACleanup();
      return  
"[Bad address]";
   }

   if(
connectsock, (sockaddr *)&dest_addrsizeof(dest_addr) ))
   {
      return 
"[Connection error]";
   }

   
sendsockbuff2strlen(buff2), 0);
   
int x 1;
   
FILE ff fopen("log.txt","w");
   while (
x>0)
   {
      
recvsockbuff256); // 256 - buffer size
      
strcat(text,buff);
      
fputs(buff,ff);
   }
   
fclose(ff);
   return 
text;


Последний раз редактировалось awdrg; 17.06.2009 в 20:07..
 
Ответить с цитированием