help:wrong behavior code:client-server IPC signal handling on POSIX Message Queue UNIX C programming
in a single main() function,so need signal handling. Use Posix Message Queue IPC mechanism , can ignore the priority and other linked list message,to implement the scenario:
client:Knock Knock
server:who's there
client: Eric
Server:Eric,Welcome.
client:exit
all process terminated
stdin->POSIX MsgQ client send "knock knock" to server->Server compares string and send "who's there" back to client
Below is my code,
What I got is :
client:knock knock
Server:Who's there?
client:eric
eric
client:Exit
Exit
1st round succeed get the right result.From 2nd round, the client put the same typing on console.
Please help. Remember to use gcc -lrt to link mq_function.
Last edited by ouou; 07-09-2011 at 09:00 PM..
Reason: How to get right indention when place code?
Hi,
I am working closly with unix message queues i have encountered the following -
after creating the Q and start working with it (pushing & pulling) i receive the following stange parameters on the q's -
STIME=no_entry
Qnum=0
CBYTES=4140
when this happens, the Q is disabled (meaning i... (3 Replies)
Hello,
My question is related to "pipcs -qa" command under HP-UX 11i PA-RISC 64 bits.
We have a little C program that creates posix ipc message queues using the mq_open() system function.
The program fail with 'No space left on device' error when we create big queues. What is the system... (6 Replies)
Hi all,
Please tell me how to change POSIX message queue maximum size? "ulimit" is not a solution because it controls shell resources. But i need to control queue size before login in and starting the shell. It is needed to limit queue size for applications started before login in.
Sorry for my... (7 Replies)
Hii can anyone pls tell how to limit the max no of message in a posix message queue. I have made changes in proc/sys/fs/mqueue/msg_max
But still whenever i try to read the value of max. message in the queue using attr.mq_curmsgs (where struct mq_attr attr) its giving the default value as 10.... (0 Replies)
Hello !!!!! I have a simple question but i can't find the answer anywhere hope to meet it here.
Why it is a bad idea to pass pointers through message queues ?
Most structs i see all of their char types are arrays... Is it becase having pointers means we could possibily send wrong bytes ?
For... (2 Replies)
Hi,
I wanted to know whether the POSIX message queues are statically allocated memory by the kernel based on the parameters specified in the open or as and when we send messages, memory are allocated?
Does the kernel reserve the specified memory for the message queue irrespective of whether... (1 Reply)
Hi, have an aix system with something I've never seen happening. All printers are not printing. I see jobs Queued and printer status as READY but jobs just keep getting queued and nothing's printing. Seems to be a system wide problem since it's affecting all printers. Help... (2 Replies)
hello, I try to test the POSIX mq_open function on book unp like below:
#include "unpipc.h"
# include <mqueue.h>
int main(int argc, char **argv)
{
int c, flags;
mqd_t mqd;
flags = O_RDWR | O_CREAT;
while ((c = getopt(argc, argv, "e")) != -1) {
... (3 Replies)
Discussion started by: anpufeng
3 Replies
LEARN ABOUT DEBIAN
net::smtp::server
Server(3pm) User Contributed Perl Documentation Server(3pm)NAME
Net::SMTP::Server - A native Perl SMTP Server implementation for Perl.
SYNOPSIS
use Carp;
use Net::SMTP::Server;
use Net::SMTP::Server::Client;
use Net::SMTP::Server::Relay;
$server = new Net::SMTP::Server('localhost', 25) ||
croak("Unable to handle client connection: $!
");
while($conn = $server->accept()) {
# We can perform all sorts of checks here for spammers, ACLs,
# and other useful stuff to check on a connection.
# Handle the client's connection and spawn off a new parser.
# This can/should be a fork() or a new thread,
# but for simplicity...
my $client = new Net::SMTP::Server::Client($conn) ||
croak("Unable to handle client connection: $!
");
# Process the client. This command will block until
# the connecting client completes the SMTP transaction.
$client->process || next;
# In this simple server, we're just relaying everything
# to a server. If a real server were implemented, you
# could save email to a file, or perform various other
# actions on it here.
my $relay = new Net::SMTP::Server::Relay($client->{FROM},
$client->{TO},
$client->{MSG});
}
DESCRIPTION
The Net::SMTP::Server module implements an RFC 821 compliant SMTP server, completely in Perl. It's extremely extensible, so adding in
things like spam filtering, or more advanced routing and handling features can be easily handled. An additional module,
Net::SMTP::Server::Relay has also been implemented as an example of just one application of this extensibility. See the pod for more
details on that module. This extension has been tested on both Unix and Win32 platforms.
Creating a new server is as trivial as:
$server = new Net::SMTP::Server($host, $port);
This creates a new SMTP::Server. Both $host and $port are optional, and default to the current hostname and the standard SMTP port(25).
However, if you run on a multi-homed machine, you may want to explicitly specify which interface to bind to.
The server loop should look something like this:
while($conn = $server->accept()) {
my $client = new Net::SMTP::Server::Client($conn) ||
croak("Unable to handle client connection: $!
");
$client->process;
}
The server will continue to accept connections forever. Once we have a connection, we create a new Net::SMTP::Server::Client. This is a
new client connection that will now be handled. The reason why processing doesn't begin here is to allow for any extensibility or hooks a
user may want to add in after we've accepted the client connection, but before we give the initial welcome message to the client. Once
we're ready to process an SMTP session, we call $client->process. This may HANG while the SMTP transaction takes place, as the client and
server are communicating back and forth (and if there's a lot of data to transmit, well...).
Once $client->process returns, various fields have been filled in. Those are:
$client->{TO} -- This is an array containing the intended
recipients for this message. There may be
multiple recipients for any given message.
$client->{FROM} -- This is the sender of the given message.
$client->{MSG} -- The actual message data. :)
The SMTP::Server module performs no other processing for the user. It's meant to give you the building blocks of an extensible SMTP server
implementation. For example, using the MIME modules, you can easily process $client->{MSG} to handle MIME attachments, etc. Or you could
implement ACLs to control who can connect to the server, or what actions are taken. Finally, a suggested use that the author himself uses,
is as an SMTP relay. There are lots of times I need access to an SMTP server just to send a message, but don't have access to one for
whatever reason (firewalls, permissions, etc). You can run your own SMTP server whether under Unix or Win32 environments, and simply point
your favorite mail client to it when sending messages. See the Net::SMTP::Server::Relay modules for details on that use.
AUTHOR AND COPYRIGHT Net::SMTP::Server / SMTP::Server is Copyright(C) 1999, MacGyver (aka Habeeb J. Dihu) <macgyver@tos.net>. ALL RIGHTS
RESERVED.
You may distribute this package under the terms of either the GNU General Public License or the Artistic License, as specified in the Perl
README file.
SEE ALSO
Net::SMTP::Server::Client, Net::SMTP::Server::Relay
perl v5.10.1 1999-12-28 Server(3pm)