Home > Archive > PERL Miscellaneous > May 2005 > IO::Socket: buffering error ?
You are viewing an archived Text-only version of the thread.
To view this thread in it's original format and/or if you want to reply to
this thread please [click here]
| Author |
IO::Socket: buffering error ?
|
|
| galdor 2005-05-26, 3:59 pm |
| Hi,
It seems i've a problem with socket-buffering ; i use IO::Socket::INET
to connect a client-program to a server-program, and send orders.
Every connection to the server is well-detected, but every string i
send to the server arrives *only* when i close the client-socket.
I've tried the flush and autoflush method, but result is the same.
Anyone would have an idea ?
| |
| xhoster@gmail.com 2005-05-26, 9:00 pm |
| "galdor" <nmartyanoff@gmail.com> wrote:
> Hi,
>
> It seems i've a problem with socket-buffering ; i use IO::Socket::INET
> to connect a client-program to a server-program, and send orders.
>
> Every connection to the server is well-detected, but every string i
> send to the server arrives *only* when i close the client-socket.
Sounds like you have a flushing problem.
> I've tried the flush and autoflush method, but result is the same.
Maybe you did it wrong.
> Anyone would have an idea ?
My idea would be make a small complete program which demonstrates the
problem, and show the damn thing to the people you are asking for help.
Maybe that is just me.
Xho
--
-------------------- http://NewsReader.Com/ --------------------
Usenet Newsgroup Service $9.95/Month 30GB
| |
|
|
| Fabian Pilkowski 2005-05-26, 9:00 pm |
| Well, please learn how to quote properly. I know Google is not the best
newsreader you could use, but I've heard there is an option to quote as
recommended. Please, read something about quoting in newsgroups, eg at
http://www.netmeister.org/news/learn2quote.html
It would be in *your* interest to provide some context when composing
contributions to a newsgroup. In the following, I fixed this for you.
* galdor schrieb:
> xhoster@gmail.com wrote:
[color=darkred]
Well, your server is reading the messages line by line. But how to know
the length of a line? Right, simply add a CRLF ("\r\n") to the rear of
the messages. I prefer to use IO::Socket's capabilities for this (you've
to change the use-statement for IO::Socket::INET for that):
use IO::Socket::INET qw( SOCK_STREAM CRLF );
print $sock_com $comres{"com"}, CRLF;
With that, your server reads the messages when they arrived instead of
reading them when the socket is closed. The CRLF means as much as "this
is the end of this message".
Btw, I suggest to turn on autoflush for STDOUT by writing
$|++;
in the beginning of your script (well, this could be a particularity of
my console on WinXP, but without that I don't see anything on my screen
before the script terminates -- your console's behavior could differ).
[color=darkred]
[color=darkred]
> You'll find the both client and server program here:
> http://darkmaster.sp.free.fr/prog/perl/
That is not exactly what Xho meant by asking for a "small complete
program". Indeed, they are complete programs, but "small" means to
remove all unnecessary parts of your scripts. Shortening a script is
what *you* should do in order that *we* don't have to search for the
relevant parts in your script.
regards,
fabian
| |
| galdor 2005-05-27, 8:56 am |
| Fabian Pilkowski a =E9crit :
> Well, please learn how to quote properly.
Understood :)
> Well, your server is reading the messages line by line. But how to know
> the length of a line? Right, simply add a CRLF ("\r\n") to the rear of
> the messages. I prefer to use IO::Socket's capabilities for this (you've
> to change the use-statement for IO::Socket::INET for that):
>
> use IO::Socket::INET qw( SOCK_STREAM CRLF );
> print $sock_com $comres{"com"}, CRLF;
>
> With that, your server reads the messages when they arrived instead of
> reading them when the socket is closed. The CRLF means as much as "this
> is the end of this message".
Fine trick, it's all good, !
> That is not exactly what Xho meant by asking for a "small complete
> program". Indeed, they are complete programs, but "small" means to
> remove all unnecessary parts of your scripts. Shortening a script is
> what *you* should do in order that *we* don't have to search for the
> relevant parts in your script.
Ok, understood too.
Thank's for your help !
galdor
|
|
|
|
|