<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Servidor web em C para estudo</title>
	<atom:link href="http://br-linux.org/2008/servidor-web-em-c-para-estudo/feed/" rel="self" type="application/rss+xml" />
	<link>http://br-linux.org/2008/servidor-web-em-c-para-estudo/</link>
	<description>Linux levado a sério desde 1996</description>
	<lastBuildDate>Tue, 14 Feb 2012 02:18:39 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Wallacy</title>
		<link>http://br-linux.org/2008/servidor-web-em-c-para-estudo/comment-page-1/#comment-33113</link>
		<dc:creator>Wallacy</dc:creator>
		<pubDate>Thu, 04 Dec 2008 16:47:06 +0000</pubDate>
		<guid isPermaLink="false">http://br-linux.org/?p=6328#comment-33113</guid>
		<description>Jean,

Nem tinha visto o exit... Foi só uma olhada superficial mesmo.

Sobre o while... Bem, considerando então a função &quot;saidaErro&quot;, o que você pode fazer por precação é estimar um limite de de &quot;tempo&quot; de espera, caso exista algum problema, mesmo causado por &quot;problemas&quot; externos ao seu programa, você sabe vai ter a segurança de que ele ira se alto finalizar. Estipule um &quot;timeout&quot;... ou algo assim...</description>
		<content:encoded><![CDATA[<p>Jean,</p>
<p>Nem tinha visto o exit&#8230; Foi só uma olhada superficial mesmo.</p>
<p>Sobre o while&#8230; Bem, considerando então a função &#8220;saidaErro&#8221;, o que você pode fazer por precação é estimar um limite de de &#8220;tempo&#8221; de espera, caso exista algum problema, mesmo causado por &#8220;problemas&#8221; externos ao seu programa, você sabe vai ter a segurança de que ele ira se alto finalizar. Estipule um &#8220;timeout&#8221;&#8230; ou algo assim&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: kayo</title>
		<link>http://br-linux.org/2008/servidor-web-em-c-para-estudo/comment-page-1/#comment-33045</link>
		<dc:creator>kayo</dc:creator>
		<pubDate>Thu, 04 Dec 2008 00:47:08 +0000</pubDate>
		<guid isPermaLink="false">http://br-linux.org/?p=6328#comment-33045</guid>
		<description>Eu acho que isso poderia ir para um sourceforge e virar um projeto interessante heim :) coloquem! coloquem!</description>
		<content:encoded><![CDATA[<p>Eu acho que isso poderia ir para um sourceforge e virar um projeto interessante heim :) coloquem! coloquem!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: meujoystick</title>
		<link>http://br-linux.org/2008/servidor-web-em-c-para-estudo/comment-page-1/#comment-32993</link>
		<dc:creator>meujoystick</dc:creator>
		<pubDate>Wed, 03 Dec 2008 18:15:55 +0000</pubDate>
		<guid isPermaLink="false">http://br-linux.org/?p=6328#comment-32993</guid>
		<description>Como são as coisas... Hoje tive que fazer um trabalho de envio e recebimento de arquivos usando socket. Acabei encontrando um código muito parecido com o seu no livro Sistemas Distribuidos - Desenvolvendo Aplicações de Alta Performance no Linux. pag. 283 para ser mais exato. Mesmo assim, valeu por compartilhar seu codigo.</description>
		<content:encoded><![CDATA[<p>Como são as coisas&#8230; Hoje tive que fazer um trabalho de envio e recebimento de arquivos usando socket. Acabei encontrando um código muito parecido com o seu no livro Sistemas Distribuidos &#8211; Desenvolvendo Aplicações de Alta Performance no Linux. pag. 283 para ser mais exato. Mesmo assim, valeu por compartilhar seu codigo.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jean</title>
		<link>http://br-linux.org/2008/servidor-web-em-c-para-estudo/comment-page-1/#comment-32987</link>
		<dc:creator>Jean</dc:creator>
		<pubDate>Wed, 03 Dec 2008 17:43:29 +0000</pubDate>
		<guid isPermaLink="false">http://br-linux.org/?p=6328#comment-32987</guid>
		<description>Wallacy, obrigado pela dica, nessa verificação do if que você comentou, tem uma função logo abaixo dela assim:

saidaErro(&quot;Nao foi possivel criar o socket.\n&quot;);

Nessa função ele tem um exit, daí não chega a entrar no outro if do listen.

Sobre o while, me falaram mesmo que o mais certo seria utilizar o for, nesse caso você poderia me indicar qual a melhor maneira para esse tipo de loop?

Obrigado</description>
		<content:encoded><![CDATA[<p>Wallacy, obrigado pela dica, nessa verificação do if que você comentou, tem uma função logo abaixo dela assim:</p>
<p>saidaErro(&#8220;Nao foi possivel criar o socket.\n&#8221;);</p>
<p>Nessa função ele tem um exit, daí não chega a entrar no outro if do listen.</p>
<p>Sobre o while, me falaram mesmo que o mais certo seria utilizar o for, nesse caso você poderia me indicar qual a melhor maneira para esse tipo de loop?</p>
<p>Obrigado</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Noob</title>
		<link>http://br-linux.org/2008/servidor-web-em-c-para-estudo/comment-page-1/#comment-32981</link>
		<dc:creator>Noob</dc:creator>
		<pubDate>Wed, 03 Dec 2008 16:48:23 +0000</pubDate>
		<guid isPermaLink="false">http://br-linux.org/?p=6328#comment-32981</guid>
		<description>Parabéns ao Jean pelo trabalho e ao Geek pelo alerta!</description>
		<content:encoded><![CDATA[<p>Parabéns ao Jean pelo trabalho e ao Geek pelo alerta!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Wallacy</title>
		<link>http://br-linux.org/2008/servidor-web-em-c-para-estudo/comment-page-1/#comment-32980</link>
		<dc:creator>Wallacy</dc:creator>
		<pubDate>Wed, 03 Dec 2008 16:33:45 +0000</pubDate>
		<guid isPermaLink="false">http://br-linux.org/?p=6328#comment-32980</guid>
		<description>Muito legal o projeto.... E novamente mais um post cheio de &quot;faz melhor então&quot; rs...

Imagina se o pessoal do Ubuntu, SUSE, Mandriva, etc.. Abandonassem suas bugzillas dizendo: Se tem bug vc que arrume rs...

E não é porque é um projeto acadêmico que ele tem que ser tratado como exceção não é? Pelo menos onde eu estudo simplesmente usar o while para fazer um serviço de um for já é o suficiente para perder  10% da questão rs...

-----

To dando uma olhada no projeto, muito bacada porém você está esquecendo tornar algumas coisas dependentes das verificações de erro... Por exemplo:

  if((sWebServer = socket(AF_INET, SOCK_STREAM, 0)) &lt; 0)
Se retornar erro ainda assim ele executa:

if(listen(sWebServer, CONPEND) &lt; 0)

Hora, se ele não conseguiu criar o socket, obviamente vai dar erro no listen... Logo essa verificação deveria ficar condicionada a anterior...

E por ser tratar de um webserver, quanto menos operações desnecessárias fizer melhor! E no caso, esse tipo de erro pode causar um travamento repentino na server caso o socket retorne erro. Afinal com erro ou não ele ainda entra no loop infinto: while(1).

Fica ai mais uma dica!</description>
		<content:encoded><![CDATA[<p>Muito legal o projeto&#8230;. E novamente mais um post cheio de &#8220;faz melhor então&#8221; rs&#8230;</p>
<p>Imagina se o pessoal do Ubuntu, SUSE, Mandriva, etc.. Abandonassem suas bugzillas dizendo: Se tem bug vc que arrume rs&#8230;</p>
<p>E não é porque é um projeto acadêmico que ele tem que ser tratado como exceção não é? Pelo menos onde eu estudo simplesmente usar o while para fazer um serviço de um for já é o suficiente para perder  10% da questão rs&#8230;</p>
<p>&#8212;&#8211;</p>
<p>To dando uma olhada no projeto, muito bacada porém você está esquecendo tornar algumas coisas dependentes das verificações de erro&#8230; Por exemplo:</p>
<p>  if((sWebServer = socket(AF_INET, SOCK_STREAM, 0)) &lt; 0)<br />
Se retornar erro ainda assim ele executa:</p>
<p>if(listen(sWebServer, CONPEND) &lt; 0)</p>
<p>Hora, se ele não conseguiu criar o socket, obviamente vai dar erro no listen&#8230; Logo essa verificação deveria ficar condicionada a anterior&#8230;</p>
<p>E por ser tratar de um webserver, quanto menos operações desnecessárias fizer melhor! E no caso, esse tipo de erro pode causar um travamento repentino na server caso o socket retorne erro. Afinal com erro ou não ele ainda entra no loop infinto: while(1).</p>
<p>Fica ai mais uma dica!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: pm#</title>
		<link>http://br-linux.org/2008/servidor-web-em-c-para-estudo/comment-page-1/#comment-32974</link>
		<dc:creator>pm#</dc:creator>
		<pubDate>Wed, 03 Dec 2008 15:55:22 +0000</pubDate>
		<guid isPermaLink="false">http://br-linux.org/?p=6328#comment-32974</guid>
		<description>parabens jean e geek...</description>
		<content:encoded><![CDATA[<p>parabens jean e geek&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: pm</title>
		<link>http://br-linux.org/2008/servidor-web-em-c-para-estudo/comment-page-1/#comment-32973</link>
		<dc:creator>pm</dc:creator>
		<pubDate>Wed, 03 Dec 2008 15:53:59 +0000</pubDate>
		<guid isPermaLink="false">http://br-linux.org/?p=6328#comment-32973</guid>
		<description>pq brasileiro entende sinceridade ou critica como ataque ? Será a famosa sindrome do vira-lata ?</description>
		<content:encoded><![CDATA[<p>pq brasileiro entende sinceridade ou critica como ataque ? Será a famosa sindrome do vira-lata ?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jean</title>
		<link>http://br-linux.org/2008/servidor-web-em-c-para-estudo/comment-page-1/#comment-32967</link>
		<dc:creator>Jean</dc:creator>
		<pubDate>Wed, 03 Dec 2008 15:27:18 +0000</pubDate>
		<guid isPermaLink="false">http://br-linux.org/?p=6328#comment-32967</guid>
		<description>Caro amigo geek, muito obrigado por explicar um dos bugs, por milagre consegui arrumar, pois não sou tão bom assim em programação. No site agora tem a versão com a correção.</description>
		<content:encoded><![CDATA[<p>Caro amigo geek, muito obrigado por explicar um dos bugs, por milagre consegui arrumar, pois não sou tão bom assim em programação. No site agora tem a versão com a correção.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: geek</title>
		<link>http://br-linux.org/2008/servidor-web-em-c-para-estudo/comment-page-1/#comment-32957</link>
		<dc:creator>geek</dc:creator>
		<pubDate>Wed, 03 Dec 2008 13:54:05 +0000</pubDate>
		<guid isPermaLink="false">http://br-linux.org/?p=6328#comment-32957</guid>
		<description>Pessoal, vocês não entenderam, eu não estava criticando o trabalho do Jean que é louvavel e sim tentando alerta-lo sobre possíveis problemas lógicos na implementação do código.

Consegui travar o servidor, vejam abaixo:

Inicializando servidor CesuRedes WebServer v1.0...[OK]
Falha de segmentação
root@filipe-laptop:/home/filipe# telnet localhost 85
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused

Para reproduzir esse resultado, experimentem mandar uma requisição qualquer sem usar GET :D

Ou seja, consegui realizar o ataque de negação de serviço.
Muito possivelmente conseguiria-mos um root na máquina que estivesse rodando esse servidor, bastanto codar um exploit que
realize algo mais interessante que um DOS, como executar o /bin/bash por exemplo ;)

Não me entendam mal, sou um geek, eu não conseguiria ver um código bugado e não falar nada :)</description>
		<content:encoded><![CDATA[<p>Pessoal, vocês não entenderam, eu não estava criticando o trabalho do Jean que é louvavel e sim tentando alerta-lo sobre possíveis problemas lógicos na implementação do código.</p>
<p>Consegui travar o servidor, vejam abaixo:</p>
<p>Inicializando servidor CesuRedes WebServer v1.0&#8230;[OK]<br />
Falha de segmentação<br />
root@filipe-laptop:/home/filipe# telnet localhost 85<br />
Trying 127.0.0.1&#8230;<br />
telnet: Unable to connect to remote host: Connection refused</p>
<p>Para reproduzir esse resultado, experimentem mandar uma requisição qualquer sem usar GET :D</p>
<p>Ou seja, consegui realizar o ataque de negação de serviço.<br />
Muito possivelmente conseguiria-mos um root na máquina que estivesse rodando esse servidor, bastanto codar um exploit que<br />
realize algo mais interessante que um DOS, como executar o /bin/bash por exemplo ;)</p>
<p>Não me entendam mal, sou um geek, eu não conseguiria ver um código bugado e não falar nada :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anthony Collucci</title>
		<link>http://br-linux.org/2008/servidor-web-em-c-para-estudo/comment-page-1/#comment-32954</link>
		<dc:creator>Anthony Collucci</dc:creator>
		<pubDate>Wed, 03 Dec 2008 13:28:59 +0000</pubDate>
		<guid isPermaLink="false">http://br-linux.org/?p=6328#comment-32954</guid>
		<description>@Geek,

Consegue escrever algo melhor? Publique! Cada uma!!! :s

Jean Parabens pela iniciativa!

flw</description>
		<content:encoded><![CDATA[<p>@Geek,</p>
<p>Consegue escrever algo melhor? Publique! Cada uma!!! :s</p>
<p>Jean Parabens pela iniciativa!</p>
<p>flw</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John Doe</title>
		<link>http://br-linux.org/2008/servidor-web-em-c-para-estudo/comment-page-1/#comment-32953</link>
		<dc:creator>John Doe</dc:creator>
		<pubDate>Wed, 03 Dec 2008 13:26:40 +0000</pubDate>
		<guid isPermaLink="false">http://br-linux.org/?p=6328#comment-32953</guid>
		<description>@geek: Achou problema no código? Corrige e publica aqui para ajudar o Jean a melhorar o trabalho dele. ;)</description>
		<content:encoded><![CDATA[<p>@geek: Achou problema no código? Corrige e publica aqui para ajudar o Jean a melhorar o trabalho dele. ;)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: douglas(cronnosli)</title>
		<link>http://br-linux.org/2008/servidor-web-em-c-para-estudo/comment-page-1/#comment-32939</link>
		<dc:creator>douglas(cronnosli)</dc:creator>
		<pubDate>Wed, 03 Dec 2008 11:25:47 +0000</pubDate>
		<guid isPermaLink="false">http://br-linux.org/?p=6328#comment-32939</guid>
		<description>Já pensou em publicar este código sob a GPL, pois assim vc garante que ele será livre para ser estudado, garante a autoria e garante que ninguem ou nenhuma empresa registre esse codigo e te processe!


Olha lá, quem sabe um dia isso num fica melhor que Apache!</description>
		<content:encoded><![CDATA[<p>Já pensou em publicar este código sob a GPL, pois assim vc garante que ele será livre para ser estudado, garante a autoria e garante que ninguem ou nenhuma empresa registre esse codigo e te processe!</p>
<p>Olha lá, quem sabe um dia isso num fica melhor que Apache!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jean Carlos</title>
		<link>http://br-linux.org/2008/servidor-web-em-c-para-estudo/comment-page-1/#comment-32934</link>
		<dc:creator>Jean Carlos</dc:creator>
		<pubDate>Wed, 03 Dec 2008 05:04:26 +0000</pubDate>
		<guid isPermaLink="false">http://br-linux.org/?p=6328#comment-32934</guid>
		<description>Obrigado pelos comentários pessoal, nesse curso que faço, temos somente uma noção básica da programação C, e nesse trabalho tivemos muito o que pesquisar. Uma preocupação que tive foi comentar muito o código para que qualquer pessoa possa entender o que cada linha faz. Mas realmente serve somente para estudos, para uso em produção precisaria de uma revisao do código por alguém mais experiente na área de C.</description>
		<content:encoded><![CDATA[<p>Obrigado pelos comentários pessoal, nesse curso que faço, temos somente uma noção básica da programação C, e nesse trabalho tivemos muito o que pesquisar. Uma preocupação que tive foi comentar muito o código para que qualquer pessoa possa entender o que cada linha faz. Mas realmente serve somente para estudos, para uso em produção precisaria de uma revisao do código por alguém mais experiente na área de C.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Leandro Hamid</title>
		<link>http://br-linux.org/2008/servidor-web-em-c-para-estudo/comment-page-1/#comment-32930</link>
		<dc:creator>Leandro Hamid</dc:creator>
		<pubDate>Wed, 03 Dec 2008 01:05:18 +0000</pubDate>
		<guid isPermaLink="false">http://br-linux.org/?p=6328#comment-32930</guid>
		<description>É Geek você tentou desmerecer o trabalho do cara mas não deu não...Parabéns Jean pelo trabalho!!!!</description>
		<content:encoded><![CDATA[<p>É Geek você tentou desmerecer o trabalho do cara mas não deu não&#8230;Parabéns Jean pelo trabalho!!!!</p>
]]></content:encoded>
	</item>
</channel>
</rss>



 

