🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.os.linux.programowanie
Article #60328

fork i sockety

#60328
From: Maciej Piekielniak
Date: Thu, 03 Nov 2005 11:46
42 lines
2428 bytes
Witam.
 Napisałem prosty czat server, do którego łączą się klienci, dla każdego 
klienta tworzony jest nowy proces fork()
i każd proces odczytuje sobie to co wysłał mu jego klient. Dzięki temu kilku 
klientów w tej samej chwili może wysyłać swoje wiadomości do serwera.
Wszystko działa ładnie. Tylko chciałbym jeszcze zrobić tak, żeby wiadomość 
od każdego klienta nie dostawał tylko serwer ale także pozostali klienci.
Jak to zrobić?


  while(1)
  {
   printf("Czekam na połączenie\n");
   if((sockfd = accept(listenfd,(struct 
sockaddr*)&adres_klienta,&klient_len)) == -1)
      WYJDZ("Błąd z akceptacją połączenia\n");

    klient++;
    printf("Polaczenie z %s i socket %d\n", 
inet_ntoa(adres_klienta.sin_addr),sockfd);
    pid_t pid = fork();
    if(!pid)
    {
     while(1)
     {
      int odp = read(sockfd, &paczka,sizeof(paczka));

      if(odp<0) { printf("Błąd odczytu\n"); break;}
      if(odp==0) { printf("Połączenie zamknięte\n"); break; }

      printf("Odebrałem: %s ",paczka.tekst);
      printf("\tBajtów: %d od klienta %d\n",odp,klient);

     }
     close(sockfd);
     exit(0);
    }
  }


-- 
Archiwum grupy: http://niusy.onet.pl/pl.comp.os.linux.programowanie
Technical Details
Message-ID: <003701c5e06c$1f617e60$1100a8c0@maciek>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!newsgate.onet.pl!newsgate.pl

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!newsgate.onet.pl!newsgate.pl
From: piechcio@isb.com.pl (Maciej Piekielniak)
Newsgroups: pl.comp.os.linux.programowanie
Subject: fork i sockety
Date: 3 Nov 2005 12:46:07 +0100
Organization: email<>news gateway
Lines: 43
Message-ID: <003701c5e06c$1f617e60$1100a8c0@maciek>
NNTP-Posting-Host: newsgate.onet.pl
Mime-Version: 1.0
X-Trace: newsgate.test.onet.pl 1131018367 5526 213.180.130.18 (3 Nov 2005 11:46:07 GMT)
X-Complaints-To: abuse@onet.pl
NNTP-Posting-Date: 3 Nov 2005 11:46:07 GMT
X-Mailer: Microsoft Outlook Express 6.00.2900.2180
X-Received: (root@newsgate.test.onet.pl) by newsgate.test.onet.pl id <S114980AbVKCLp5>; Thu, 3 Nov 2005 12:45:57 +0100
X-Received: from isb.com.pl ([212.160.150.140]:14487 "EHLO isb.com.pl") by newsgate.test.onet.pl with ESMTP id <S114974AbVKCLpo>; Thu, 3 Nov 2005 12:45:44 +0100
X-Received: from maciek (sembrz [192.168.1.50]) by isb.com.pl (Postfix) with SMTP id 465A8461CD for <pl-comp-os-linux-programowanie@newsgate.pl>; Thu,  3 Nov 2005 12:43:13 +0100 (CET)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit