[C] Rozesłanie wiadomości do wszystkich z uruchomioną aplikacją podpiętą pod jedną kolejkę o tym samym keyu
Ostatnio zmodyfikowano 2013-12-02 16:14
marcopolo Temat założony przez niniejszego użytkownika |
[C] Rozesłanie wiadomości do wszystkich z uruchomioną aplikacją podpiętą pod jedną kolejkę o tym samym keyu » 2013-12-01 11:50:38 Witajcie, mam program, który odbiera i wysyła wiadomości, i na odwrót. Czyli 2 programy. I teraz jest taka kwestia. Program, który powinien odebrać wiadomość i rozesłać ją dalej, do osób, które mają uruchomioną aplikację nie działa do końca tak, jak trzeba, gdyż zwraca tylko wiadomość tej osobie, co ją wysłała mimo że typ jest taki sam. Klient-wysyłanie: struct msg { long int type; char a[ 1024 ]; int pid; } p, p1;
int main() { int m; while( 1 ) { m = msgget( 1000, 0 ); p.type = 1; scanf( "%s", & p.a ); pid_t pid; p.pid = getpid(); getchar(); msgsnd( m, & p, sizeof( p ), 0 ); msgrcv( m, & p1, sizeof( p ), 2, 0 );
Serwer-odbieranie i rozsyłanie do innych klientów: struct msg { long int type; char a[ 1024 ]; int pid; } p;
int main() { int m; while( 1 ) { msgrcv( m, & p, sizeof( p ), 1, 0 ); p.type = 2; p.pid = getpid(); msgsnd( m, & p, sizeof( p ), 0 );
No i niestety - typ sie zgadza z tym co chce odebrac klient, ale odbiera tylko ten, który wysłał, a tego nie rozumiem. Jakieś wskazówki ? |
|
marcopolo Temat założony przez niniejszego użytkownika |
» 2013-12-01 16:15:35 No nikt nie ma pomyslu ? |
|
marcopolo Temat założony przez niniejszego użytkownika |
» 2013-12-02 15:08:42 Rozumiem, ze Was to przeroslo. |
|
pekfos |
» 2013-12-02 15:11:55 Albo nikt tego nie używa i/lub podałeś za mało kodu by sprawdzić działanie i poeksperymentować. |
|
marcopolo Temat założony przez niniejszego użytkownika |
» 2013-12-02 16:14:42 Ale to już jest cały kod, który odpowiada za komunikację.. |
|
« 1 » |