| Форум| Гостевая| Ссылки| Программы| Исходные тексты| Наши партнеры.|
   
| Главная| Рассылки| Услуги| Библиотека| Новости| Авторам| Программистам| Студентам|
delphi c++ assembler
 

Шаг 9 - Посылаем документ

Создаем проект

Проект мы оставим старый нам нужно внести изменения всего в одну функцию OnServerAccept

Создаем код

afx_msg LRESULT CHTTPServerView::OnServerAccept(WPARAM wParam, LPARAM lParam)
{
	CHTTPServerDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	HTTPServer.clientsocket = INVALID_SOCKET;
	pDoc->csInfo = "Client Connect !!!!!"; 
	Invalidate();
	if (WSAGETASYNCERROR(lParam))
	{
		AfxMessageBox("Error detecting Client");
		return 0L;
	}
	if (WSAGETSELECTEVENT(lParam) == FD_ACCEPT)
	{
		int length=sizeof(SOCKADDR);
	
		SOCKADDR_IN socketclientaddr;
		HTTPServer.clientsocket=accept(HTTPServer.servsocket,(LPSOCKADDR)&socketclientaddr, (LPINT) &length);
		if (HTTPServer.clientsocket == INVALID_SOCKET)
		{
			AfxMessageBox("Invalid Client Socket");
			return 0L;
		}
          CString buff="< html >\n< p >Сайт шаг за шагом представляет\n< /html >\r\n";
	  HTTPServer.SendData(buff.GetBuffer(1000));
	  closesocket(HTTPServer.clientsocket);
	   
	}

	return 0L;
}
Вот код в процедуру передаются параметры, в том числе и что произошло обращение FD_ACCEPT. В самом начале мы проверяем параметры. И если все нормально accept для создания сокета клиента. После чего можно посылать данные. Посылку данных я вынес в отдельную процедуру.
void CSeverWinSock::SendData(LPSTR buff)
{
	int Errors;
	Errors = send(clientsocket,(LPSTR)buff,lstrlen(buff),0);
	if (Errors == SOCKET_ERROR) AfxMessageBox("Error Send");
}
После посылки данных сокет можно закрыть.

В большой степени абстракции можно весь данный процесс со стороны сервера представить как

socket()
bind()
WSAAsyncSelec()
linten()
	if accept send()
closecoket()
Вот такой результат работы нашего сервера. Только одно предупреждение. После запуска подождите немного. И иногда при запросе сервер не отвечает. Но очень редко. Есть и еще одна мелочь. После обращения к серверу в каталоге Windows\Internet Temporary помешается временный файл. Если хотите тестировать удаляйте его после каждого обращения, иначе страница будет загружаться оттуда. Имя её будет IP, который вы вводили для обращения к серверу.

step9.gif (10720 b)


Загрузить проект | Предыдущий шаг | Следующий Шаг | Оглавление

By Artem.
Используются технологии uCoz
 

Rambler's Top100 Rambler's Top100

©  Adept Design Studio

Используются технологии uCoz