[ale] OT: C not C++ Question
Geoffrey
esoteric at 3times25.net
Sun Dec 29 07:49:44 EST 2002
kschmidt at mindspring.com wrote:
> Why don't you want to use C++?
'cause he said rapid development. :)
>
> On 28 Dec 2002 23:20:00 -0500 cfowler <cfowler at outpostsentinel.com> wrote:
>
>
>>I've been working on a little project to
>>replicate the success I've had
>>in Java (fast programming) to C (slow
>>programming). I've been
>>replicating the Java classes to C and not C++.
>>But I've come into an
>>interesting issue where since we have no
>>garbage collector in C that we
>>must be extremely careful to free all allocated
>>data. All the code in
>>'liboop' malloc()'s each object.
>>
>>
>>Socket Object:
>>
>>// Out Socket Object definition
>>typedef struct oop_Socket {
>> struct sockaddr_in inet; // Socket info
>> int sock;
>> BOOLEAN connected;
>> BOOLEAN debug;
>> BOOLEAN server;
>> BOOLEAN soReuseAddr;
>>} Socket;
>>
>>
>>Example Code:
>>int
>>main(int argc, char **argv)
>>{
>> Socket *sock;
>> String *tmp;
>> InputStream *is;
>> OutputStream *os;
>> BufferedInputStream *bis;
>> String *to = String_new("");
>> String *from = String_new("");
>> int code;
>>
>> if((sock = Socket_new("192.168.1.254",
>>25)) == NULL)
>> err("Could not create Socket");
>>
>> if((Socket_connect(sock)) == -1)
>> err("Could not make
>>conenction");
>>
>> //Now we have a conenction lets get out
>>streams
>> is = Socket_getInputStream(sock);
>> os = Socket_getOutputStream(sock);
>>
>> // Create our buffered input stream
>> bis = BufferedInputStream_new(is);
>>
>> tmp =
>>BufferedInputStream_readLine(bis);
>> printf("Got: [%s]\n",
>>String_getChars(tmp));
>> String_dispose(tmp);
>>
>> tmp = String_new("Helo
>>localhost.localdomain\r\n");
>> sendCmd(sock, tmp, &code);
>> String_dispose(tmp);
>>
>> tmp = String_new_1("MAIL FROM: %s\r\n",
>>String_getChars(from));
>> sendCmd(sock, tmp, &code);
>> String_dispose(tmp);
>>
>> tmp = String_new_1("RCPT TO: %s\r\n",
>>String_getChars(to));
>> sendCmd(sock, tmp, &code);
>> String_dispose(tmp);
>>
>> tmp = String_new("DATA\r\n");
>> sendCmd(sock, tmp, &code);
>> String_dispose(tmp);
>>
>> InputStream_dispose(is);
>> is = InputStream_new(NULL);
>> InputStream_setFd(is, 0); // Set FD to
>>STDIN
>> bis = BufferedInputStream_new(is);
>>
>> while(true) {
>> tmp =
>>BufferedInputStream_readLine(bis);
>>
>> if(String_startsWith(tmp, ".")
>>== true) {
>> String_append(tmp,
>>"\r\n");
>>
>>OutputStream_write_1(os, tmp);
>> tmp =
>>BufferedInputStream_readLine(
>>
>>BufferedInputStream_new(
>>
>>Socket_getInputStream(sock)));
>>
>> printf("Got: [%s]\n",
>>String_getChars(tmp));
>> String_dispose(tmp);
>> break;
>> }
>>
>> String_append(tmp, "\r\n");
>> OutputStream_write_1(os, tmp);
>>
>> }
>>
>>
>> // Clean up
>> String_dispose(to);
>> String_dispose(from);
>> BufferedInputStream_dispose(bis);
>> InputStream_dispose(is);
>> OutputStream_dispose(os);
>> Socket_dispose(sock);
>>
>>}
>>
>>
>>Since the test code never gets a pointer in the
>>while loop to the
>>BufferdInputStream that is created it is
>>forever lost memory. Any ideas
>>on how I can accomplish these tasks. Notice
>>how the above C code looks
>>like Java :)
>>
>>
>>
>>_______________________________________________
>>Ale mailing list
>>Ale at ale.org
>>http://www.ale.org/mailman/listinfo/ale
>>
>
>
> _______________________________________________
> Ale mailing list
> Ale at ale.org
> http://www.ale.org/mailman/listinfo/ale
>
>
--
Until later: Geoffrey esoteric at 3times25.net
The latest, most widespread virus? Microsoft end user agreement.
Think about it...
_______________________________________________
Ale mailing list
Ale at ale.org
http://www.ale.org/mailman/listinfo/ale
More information about the Ale
mailing list