Schrift
[thread]5948[/thread]

Server+Client=Kommunication ... oder auch nicht



<< >> 4 Einträge, 1 Seite
Agent Smith
 2003-12-04 23:26
#74379 #74379
User since
2003-09-23
4 Artikel
BenutzerIn
[Homepage] [default_avatar]
hallo erstmal,

ich habe vor kurzem angefangen mich mit sockets zu beschäftigen. Das prog um das es hier geht, besteht aus server und client und soll irgendwann mal sowas wie n chat werden.

so jetz zum problem:
Der client soll zum server connecten, worauf hin der server dem client hallo sagen soll. dannach soll der client text an den server schicken, den dieser ausgeben soll. klingt garnet so kompliziert, oder?
das prob is jetz aber, dass das ganze aus mir unerklärlichen gründen hängen bleibt. und zwar wenn ich den server starte, gibt dieser "zu client connectet" aus. der client gibt das hallo vom server aber nicht aus, und schickt ihm auch nicht den text in $text (auf jeden fall gibt der server den text nicht aus). wenn ich den server allerdings beende, gibt der client das hallo vom server aus. das ganze funkt auch wenn ich beim server
Code: (dl )
1
2
$ausgabe = <$new_sock>;
print $ausgabe;

rausnehme. das is aber nich der sinn der sache, soll ja n dialog werden.

SERVER:
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
use strict;
use IO::Socket;

my $ausgabe;

print "-------server-------\n\n";

my $sock = new IO::Socket::INET (LocalAddr => 'localhost',
LocalPort => 8888,
Portto => 'tcp',
Listen => 1,
Reuse => 1) || die "$!";
my $new_sock = $sock->accept();


print "zu client connectet!";
print $new_sock "hallo!";

$ausgabe = <$new_sock>;
print $ausgabe;


close($new_sock);

my $windoof = <STDIN>;


CLIENT:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
use strict;
use IO::Socket;

my $text;

print "-------client-------\n";

my $sock = new IO::Socket::INET (PeerAddr => 'localhost',
PeerPort => 8888,
Portto => 'tcp') || die "$!";

my $hallo = <$sock>;
print "$hallo\n\n";

$text = "huhu";
$sock->send($text);


close($sock);

my $windoof = <STDIN>;


Ich hab leider keine ahnung wo (und vor allem warum) das ganze hängt. ich hoff ma es is irgendwas sehr simples, was es wohl auch sein wird, bei dem mächtigen und komplexen programm :D

also thx erstmal, adam

... Und macht doch bitte das eingabefenster größer, es is grausig in diesem winzigen ding ein beitrag zu verfassen.
kabel
 2003-12-05 00:34
#74380 #74380
User since
2003-08-04
704 Artikel
BenutzerIn
[default_avatar]
1. das wird gepuffert, und erst mit einem newline rausgeschrieben.
also nicht einfach print "hallo!"; sondern print "hallo!\n";, dann klappts auch mit dem nachbarn.

2. die option Portto kennt die doku net (IO::Socket::INET) vermutlich meinst du Proto.

3. das quickreply ist für ganz kurze nachrichten gedacht, und das fenster zum echten reply könnte meiner meinung nach auch etwas größer ausfallen.

HTH
-- stefan
Agent Smith
 2003-12-05 22:03
#74381 #74381
User since
2003-09-23
4 Artikel
BenutzerIn
[Homepage] [default_avatar]
thx, war ja fast noch simpler als ich dachte... und das ich portto schreib, dahinter tcp und ich merk nich das das irgendwie komisch is, echt lol.

kk, also thx&&cu, adam
Strat
 2003-12-05 23:33
#74382 #74382
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
zum server: kennst du schon How to Write a Chat Server ? das war so eins meiner ersten beispiele fuer Netzwerkprogrammierung
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
<< >> 4 Einträge, 1 Seite



View all threads created 2003-12-04 23:26.