Re: How hard is socket programming?
Peter Olcott wrote:
"Hector Santos" <sant9442@nospam.gmail.com> wrote in message
news:%23YrAhQ%23xKHA.3408@TK2MSFTNGP06.phx.gbl...
Peter Olcott wrote:
I just want to understand how the handle the most
malicious user in the most robust way. If I can block an
IP address without costing me any bandwidth, then I think
I have one significant aspect of blocking the most
malicious user.
As joe puts it, you are "obsessing" again :)
Its very simple with the server model:
s = socket() - create a socket handle
bind(s) - associate an local IP with socket s
handle
listen(s) - starting to listen to connection
accept(s,c) - wait for clients, new socket c for
connect
CHECK PEER IP ADDRESS OF C IN FILTER LIST,
IF FOUND, CLOSE SOCKET GOTO BACK TO ACCEPT
recv(c) - receiver whatever
send(c) - send whatever
shutdown(c) - tell remote I'm about to close
closesocket(c) - close socket handle
go back to accept
--
HLS
That does seem pretty simple. Would I only need a single
recv(c) for a 10 MB file?
No, a recv() is a loop and you read 8K at a time:
FILE *fv = fopen(szImageFileName,"wb");
char buf[8*1024] = {0};
for (;;)
{
int len = recv(c,buf,sizeof(buf),0);
if (len <= 0) break;
fwrite(buf,len,1,fv);
}
fclose(fv);
But the above is very simplistic.
Mongoose.c, without verifying but I trust it will, otherwise it isn't
a web server, will same the POSTED data in some temporary file for the
transaction (while the connection is alive). That FILE NAME is then
passed your CGI script or whenever is going to process the posted data.
So it should be done for you. You just need to learn how Mongoose
implements this fundamental web server idea.
Again, if it doesn't handled POSTed data for you, then GET RID of it,
it isn't a real web server of any kind.
But I know it does because its fundamental and a HTTP standard
requirement to handle POST correctly and that includes save the data
somewhere for the session to process.
--
HLS