#!/usr/bin/perluse IO::Socket;
use DBI;
my $dbname="bblaaa";
my $username="bla";
my $pw="blabla";
my $data1 = "DBI:mysql:$dbname";
my $data2 = DBI->connect($data1, $username, $pw, { RaiseError => 1 }) || die("Kann MYSQL DB nicht öffnen!");
use constant MYPORT => 9810;
$sock = new IO::Socket::INET(LocalPort => MYPORT,
Reuse => 1,
Listen => 5)
or die "can't create local socket: $@\n";
print "Server lauft, zum Beenden Strg+c eingeben oder Prozess killen\n";
while ($client = $sock->accept()) {
print "Accepting connections on Port ", MYPORT, "...\n";
print "Accepted connection from ",
$client->peerhost(), ":", $client->peerport(), "\n";
if (fork() == 0) {
while (<$client>) {
$client_send = $_;
my $leer = " ";
#------------------------------------------------------------------
#Protokoll beginn - ABFRAGEN , BEFEHLE etc.
($i1, $i2, $i3, $i4, $i5, $i6)=split($leer,$client_send);
print "\n<- Empfange Daten:\n(".$client_send.")\n";
# --- Start von Verbindungserlaubnis einholen ---
#Vor dem Verbinden zum Server wird eine Verbindungsfrage gestellt. Ist z.B. ein User gebannt kann so der Zugriff auf das System
#verweigert werden.
if($i1." ".$i2 eq "sadfasdfasdfas3dfaswasf9 connect_request\r\n") {
print "-> Verbindung zum Server erlaubt\n";
print $client "connect_ok";
}
#-Nachrichtsenden
if($i1." ".$i2 eq "sadfasdfasdfas3dfaswasf9 nachrichtsenden\n") {
# $i3 ist in diesemfall die chatnachricht
print $i3;
}
}
Nur leider schickt der Server einfach nur 1 Nachricht an 1 Clienten, wenn jetzt z.B. 2 Clienten verbunden sind sendet er die nachricht nur an den zurück, der sie zu ihm gesendet hat! :(
Er soll diese Nachricht (Abschnitt nachrichtsenden) aber an alle verbunden clienten senden :(