Thread win32 udp server (5 answers)
Opened by hudo at 2007-08-09 04:12

hudo
 2007-08-09 04:12
#97810 #97810
User since
2003-11-20
72 Artikel
BenutzerIn
[default_avatar]
Hallo, hab einen UDP server, der requests empfaengt und eine Antwort an den client zurueck schickt,
und einen client der request versendet und eine Antwort empfaengt.

Der client-Code
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#!/usr/bin/perl
# udp client

use strict;
use Tie::File;
use Socket qw(:DEFAULT :crlf);
$/ = CRLF;
use constant DEFAULT_HOST =>'192.168.178.23';
use constant DEFAULT_PORT =>'4712';
use constant MAX_MSG_LEN => 100;
my $host = shift ||DEFAULT_HOST;
my $port = shift ||DEFAULT_PORT;

my $counter=0;
my @array_file;

my $protocol = getprotobyname('udp');
$port = getservbyname($port, 'udp') unless $port =~ /^\d+$/;

my $data;
my $sendung;

socket(SOCK, AF_INET, SOCK_DGRAM, $protocol) or die "socket() gescheitert: $!";
my $dest_addr = sockaddr_in($port, inet_aton($host));

## Sende-Empfangsschleife ##
while(1) {

fill_with_tie(); ## Sendedaten aus Datei lesen

print "Laenge sendung: length($sendung) \n\n";
if ( length($sendung) == 0 ) {
$sendung = 'init';
} # if
print "sendung: $sendung\n\n";

send(SOCK, $sendung, 0, $dest_addr) or die "send() gescheitert: $!";
recv(SOCK, $data, MAX_MSG_LEN, 0) or die "receive() gescheitert $!";

fill_empfang_file($data); ## Empfang in Datei schreiben

chomp($data);
print "Empfangen: $data \n";

sleep(3);

} # while

sub fill_with_tie {
my $file = "meinfile.txt";
my $line;
my $elem;

$sendung ='';

if ( -e $file ) {
tie @array_file, "Tie::File", $file || die $!;
foreach $elem (@array_file) {
chomp $elem;
$sendung= $sendung ."$elem";
} ## foreach
untie @array_file;
} else {
print "Kann $file nicht oeffnen $!$/";
} ## if -s $file
} ## fill_with_tie #################


sub fill_empfang_file {
my $file="empfangsfile.txt";
my $line = @_[0];
my $elem;

print "Operator: $line \n";
open (EMPFANG, ">>$file") or die "Kann $file nicht oeffnen $!\n";

print EMPFANG "$line\n";
close(FILE);
} ## fill_empfang_file ##############

View full thread win32 udp server