Pytanie : RPG Gniazdkowy Program Obwieszenie dalej Łączyć ()

Najpierw, I być nowy gniazdkowy programowanie. I zakładać wielki wielki online i am reusing kod od ono. I używać gniazdkowy program gniazdkowy rozkaz produkcja tablica wyników. The proces rozkaz increment/decrement kontuar, etc na the board.

In mój gniazdkowy program, I wysyłać the binarny/binarny rozkaz różnorodny 8 wkład port dla the deska proces. W ten przykład, I używać oprogramowanie the binarny rozkaz wkład (1) (sumaryczny obliczenie). The gniazdkowy program przypadkowo wracać błąd który ono móc the host.

Ex:

I móc mój program 70x wśród minuta lub w ten sposób i ono przyrost the sumować odpierający 70x. Świetnie być świetnie. Wtedy, z nigdzie, gdy, the program próba związek na port 4001 i ono wieszać. Ono wtedy wracać błąd ono móc związek the gospodarz wśród the timeout period.

As dla działanie/, ono pojawiać się całkowicie przypadkowy. I móc the nasadka, i the nasadka kilka czas i świetnie być świetnie. I móc wtedy 3 minuta i, i the program wieszać na the łączyć funkcja. Jakaś pomysł?

thanks w postęp - Adam
(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:
eval skarpeta = nasadka                       
             (AF_INET: SOCK_STREAM: IPPROTO_IP)

jeżeli łączyć (skarpeta: p_connto: addrlen) < (0)   
eval błądzić = errno                            
callp zamknięty (skarpeta)                            
callp kostka do gry ('łączyć (): '+%str (strerror (błądzić))) 
powrót                                           
endif                                            

eval rc = Wysyłać (skarpeta: %addr (activeCmd): 4: (0)) 
                                                
jeżeli rc < 4                                
eval błądzić = errno                           
callp zamknięty (skarpeta)                           
callp kostka do gry (%str (strerror (błądzić)))              
powrót                                          
endif                                           

eval rc = Recv (skarpeta: %addr (activeCmd): 4: (0)) 
e bajt jeżeli żadny bajt wracać                 
jeżeli rc < (1)                                
callp zamknięty (skarpeta)                           
callp kostka do gry (%str (strerror (błądzić)))              
powrót                                          
endif

Odpowiedź : RPG Gniazdkowy Program Obwieszenie dalej Łączyć ()

Tak daleko jak the wsad NEP który retransmitować, I naprawdę lubić the dźwięk i, ale znać i ono być.

Zmartwiony… NEP -- Bez końca Program.

Podstawowy, ono być program który ty przedkładać bieg w niektóre wsad podsystem i który oczekiwać na zawsze. (Dobrze, until ( jakby dowodzić lub sygnał mówić ono końcówka.) Ty można ono akcydensowy kolejka QSYSNOMAX bieg jak różnorodny serwer program.

Twój program zaczynać the gniazdkowy związek. Wtedy ono siedzieć podczas gdy czekać wejście na dane stać w kolejce. Za Każdym Razem, Gdy wejście pojawiać się, ono wysyłać ono przez the nasadka i pójść z powrotem jeżeli inny wejście być na the dane kolejka.

Ono można 99.999% swój czas właśnie. Jakaś liczba program od inny praca móc dosłanie rozkaz the pojedynczy dane kolejka.

Jeżeli konieczny, the dane kolejka móc wpisywać tak, że każdy rozkaz miewać unikalny identyfikator, być może od the GENUUID API. Gdy rozkaz ciągnąć od the kolejka i wysyłać kolejka the nasadka, the unikalny ID używać przyznanie plecy przez the dane kolejka. Tylko the dosłanie praca znać który klucz być the przyznanie dla ono. The dane kolejka zapewniać dwudrogowy komunikacja między twój praca i twój "gniazdkowy serwer".

Jeżeli the pojemność być tak dużo że twój serwer móc twój, ty po prostu zaczynać drugi jeden.

The "gniazdkowy serwer" miewać praca potrzebować twój nasadka praca. Ono miewać jakaś komplikacja od the komenderowanie od the dane kolejka -- ono właśnie wysyłać ono pokazywać ono. Utrzymywać the logika skupiać się w miło oddzielony proc, moduł i program -- staranny podział pracy.

Twój "klient program" także być prosty. Być rękojeść the odpowiedni nakazowy sznurek i wysyłać the dane kolejka. (Kolejka, ono być dwudrogowy dane kolejka; ale to można opóźniony ulepszenie. Robić ono praca, then robić ono lepszy.)

Jeżeli ty biedak używać dane kolejka, ty musieć łatwy nasadka.

Tom
Inne rozwiązania  
 
programming4us programming4us