Старый 10.11.2011, 08:28   #71
SeNaP
 
Аватар для SeNaP
 
Регистрация: 03.08.2010
Сообщений: 152
Репутация: 10
По умолчанию

Пробую написать простой http сервер, но не могу понять, как отправить заголовки в браузер


PHP код:
#define HOST "127.0.0.1"
SOCKET Start_Server(short port)
{
      
WSADATA                wsaData;
    
SOCKET                Winsock;
    
struct sockaddr_in    Winsock_In;
    
struct hostent        *Ip;
    
char                hn[1024];

    
WSAStartup(MAKEWORD(22), &wsaData);
    
Winsock=WSASocket(AF_INETSOCK_STREAMIPPROTO_TCPNULL, (unsigned int)NULL, (unsigned int)NULL);
    if(
Winsock == INVALID_SOCKET){
        
WSACleanup();
        return -
1;
    }

    
Ip gethostbyname(HOST);
    
Winsock_In.sin_port htons(port);
    
Winsock_In.sin_family AF_INET;
    
Winsock_In.sin_addr.s_addr inet_addr(HOST);//inet_addr(inet_ntoa(*((in_addr*)Ip->h_addr_list[0])));
    
if(bind(Winsock, (SOCKADDR*)&Winsock_Insizeof(Winsock_In)) == SOCKET_ERROR){
        
WSACleanup();
        return -
1;
    }
  return 
Winsock;
}

void GetHtmlList(FILEf)
{
    
fprintf(f"<HTML><HEAD><TITLE>ggg</TITLE></HEAD>\r\n");
}

void Main_WebServer()
{
    
SOCKET                Winsock;
    
char                Buf[255];
    
char*                temp;
    
char                buf[255];
    
char*                buffer[255]; 
    
struct sockaddr_in client
    
int clientsize sizeof(client); 
    
int i;

    
Winsock Start_Server(5656);
    
listen(Winsock5);

    
strcpy(Buf"HTTP/1.0 200 OK\r\n");
    
strcat(Buf"Content-Type: text/html\r\n");
    
strcat(Buf"Connection: close\r\n\r\n");

     while (
1)
    {
        
int s;
        
FILE *f;
    
        
accept(Winsock, (struct sockaddr*)&client, &clientsize);
        if (
== INVALID_SOCKET) break;
                
               
send(sBuf, (int)strlen(Buf), 0);
        
                  
       
/*f = fdopen(s, "r+");
        GetHtmlList(f);
        fprintf(f, "<HTML><HEAD><TITLE>ggg</TITLE></HEAD>\r\n");
        fclose(f);*/
    
}

    
closesocket(Winsock);  // закрытие сокета 
    
WSACleanup(); 

Страница как бы, пытается постоянно загрузиться, но не грузиться. Как быть ?
SeNaP вне форума   Ответить с цитированием
Старый 13.11.2011, 12:22   #72
overxor
 
Регистрация: 14.10.2011
Сообщений: 73
Репутация: 90
По умолчанию

Установи Content-Length равный 0, чтобы браузер знал, что больше не будет данных.
Цитата:
strcpy(Buf, "HTTP1/0 200 OK\r\n");
strcat(Buf, "Content-Type: text/html\r\n");
strcat(Buf, "Connection: close\r\n");
strcat(Buf, "Content-Length: 0\r\n\r\n");
и после отправки сообщения закрывай сокет
Цитата:
closesocket(s);
__________________
[IO]
overxor вне форума   Ответить с цитированием
Старый 22.11.2011, 22:08   #73
SeNaP
 
Аватар для SeNaP
 
Регистрация: 03.08.2010
Сообщений: 152
Репутация: 10
По умолчанию

overxor, спасибо.

Хочу попробовать написать бота для GTA 2, чтобы выполнял обычные функции, например передвижение, вообщем, в какую сторону копать?
SeNaP вне форума   Ответить с цитированием
Старый 30.06.2012, 18:13   #74
AAntonoff
 
Регистрация: 30.06.2012
Сообщений: 1
Репутация: 0
По умолчанию

День добрый. Создаю массив форм. Не могу понять ГДЕ написать код закрытия КОНКРЕТНОЙ формы? Кнопку закрытия не создаю, есть только "крестик" сверху=). Формы создаются программно.
Цитата:
TForm *MyForm[5];
int i=0;
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(i>4){
AnsiString msg = "Нельзя создавать так много заметок";
Application->MessageBox(msg.c_str(),
Application->Title.c_str(),
MB_OK | MB_ICONINFORMATION);
} else{
MyForm[i] = new TForm(this);
MyForm[i]->Name = "Stick" + IntToStr(i + 1);
MyForm[i]->Caption = "Заметка" + IntToStr(i + 1);
MyForm[i]->Show();
i++; }

//delete MyForm[i];

}
AAntonoff вне форума   Ответить с цитированием
Старый 22.04.2013, 17:06   #75
b30v3r
 
Аватар для b30v3r
 
Регистрация: 22.04.2013
Сообщений: 7
Репутация: 3
По умолчанию

Цитата:
Сообщение от SeNaP Посмотреть сообщение
Страница как бы, пытается постоянно загрузиться, но не грузиться. Как быть ?
Цитата:
Сообщение от overxor Посмотреть сообщение
Установи Content-Length равный 0, чтобы браузер знал, что больше не будет данных.
Не нужно устанавливать Content-Length в 0. Content-Length должен быть равен размеру HTML-кода страницы, который возвращает сервер. В Вашем случае Content-Length должен быть равен:
Код:
strlen("<HTML><HEAD><TITLE>ggg</TITLE></HEAD>\r\n");
b30v3r вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot