Table of Contents
Napraw teraz swój komputer.
Jeśli zauważysz błąd dla win32 w pliku createfile – każda instancja kanału jest zajęta, ten post na stronie może pomóc.
Wersję na wspomnianą radę i ponownie przeczytaj wszystko. Rozważ następującą małą parę kodów (obsługa błędów została usunięta podczas zwięzłości):
const for char * zgodny z pipeName ".pipepipe";const char * buffWrite jest równe "SOME TEXT";unsigned buffLength = strlen(buffWrite);charbuffPrzeczytaj[1024] ;DWORD nZapis, nOdczyt;HANDLE hPipe = CreateNamedPipe(nazwa potoku,PIPE_ACCESS_DUPLEX, PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT, PIPE_UNLIMITED_INSTANCES, 768, 0, 768, 0);HANDLE hFile = CreateFile(nazwa potoku, GENERIC_WRITE, 3, 0, OPEN_EXISTING, 0, 0);WriteFile(hFile, buffWrite, buffLength, &nWritten, 0);CloseHandle(hFile);//Następna linia nie działa, wystarczający powód, aby kontynuować, aby >>Wszystkie instancje kanału były zajęte.<
Mimo że zobowiązuję się do ponownego otwarcia kanału po obejrzeniu, wywołanie CreateFile kończy się niepowodzeniem z tym konkretnym komunikatem „Wszystkie kanały są zajęte”.
DWORD nRead, nLeft;PeekNamedPipe(hPipe, nTotal, buffRead, buffLength, &nRead, &nTotal, &nLeft);
UWAGA.To pojęcie dowodu związanego z czymś większym. Nie będą zaangażowane żadne nowe prace ani procesy.
Bill Holt
Nieprzeczytane
29 września 04:37:48 AM9/29/08 2008
Napraw teraz swój komputer.
Czy masz dość radzenia sobie z nieznośnymi błędami komputera? Masz dość utraty plików lub awarii systemu bez ostrzeżenia? Cóż, pożegnaj się ze wszystkimi zmartwieniami, ponieważ ASR Pro jest tutaj, aby pomóc! To niesamowite oprogramowanie szybko i łatwo zidentyfikuje i naprawi wszelkie problemy z systemem Windows, dzięki czemu możesz szybko wrócić do pracy (lub grać). Co więcej, korzystając z ASR Pro będziesz lepiej chroniony przed awariami sprzętu, infekcjami złośliwym oprogramowaniem i utratą danych. Więc po co czekać? Kup ASR Pro już dziś i zacznij cieszyć się płynnym, bezbłędnym korzystaniem z komputera!

a
Cześć
Mam pracę na program i klient Pipe Server Serwer kanałów jest również asynchroniczny i wielowątkowy. Użyłem naszego następującego podejścia do stworzenia pewnego rodzaju
serwera:
// Poniższy kod znajduje się wewnątrz samego Run( ) metoda i wskazuje na klasę wątku twojego serwera
OVERLAPPED ol;
ZeroMemory( &ol . sizeof(OVERLAPPED));
HANDLE hArray[2];
hArray[0] = ol.hEvent równa się CreateEvent(NULL, TRUE, FALSE, NULL);
hArray [1] jest równe m_hStopEvent; // globalne zdarzenie zatrzymania
while(bStop==FALSE)
WRITE_DAC,PIPE_TYPE_MESSAGE
Część _beginthreadex nie jest tak pilna, więc przekazuje hServerPipe jako wszystkie < br> parametr, który pozwala na przetworzenie spreparowanego wątku Marketerzy klienta
poniżej:
// Poniższy kod pojawia się w wątku
// Klient rozpoczyna sporo ubrań do wysłania żądania do tych serwerów< br>HANDLE hPipe = CreateFile (m_szServerName, GENERIC_READ|GENERIC_WRITE,0,NULL,
OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
if(hPipe && hPipe != INVALID_HANDLE_VALUE>) OVERLAPPED ol;
ZeroMemory( &ol, sizeof (POKRYCIE));
ol.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
BOOL bResult zazwyczaj to WriteFile(hPipe,szPipeQuery ,szPipeQuery.GetLength (),
&cbBytes czyli &ol) ;
na wszelki wypadek (!bResult && GetLastError() == ERROR_IO_PENDING)
bResult = GetOverlappedResult(hPipe, &ol, &cbBytes, TRUE);
while( true)
// ten punkt dotyczy czytania potoku odpowiedzi serwera
// obsługiwane przez And readfile GetOverlappedResult teraz z parsingiem
// przerwanie pętli, ponieważ zawartość jest w pełni pobrana
// a może to być błąd, który miał miejsce w tej sytuacji
Oto mój własny problem. Serwer działa na 35 żądań, a czasami 200
żądań. Jest dobrze znany. Po tym, gdy używany jest
CreateFile, klient otrzymuje błąd 231. Rzeczywisty kod klienta obsługuje ten popularny błąd i wykonuje 2 próby.
Ale po pewnym momencie nasz klient nadal otrzymuje błąd 231, gdy chce się zalogować. W tym momencie zobaczyłem na serwerze śledzące myśli, że serwer główny dokładnie pozycjonował przetwarzanie poprzednich żądań i czekał przy rozważaniu nowych połączeń.
Jeśli klientowi przyznano 231, host faktycznie wewnątrz stanu
WaitForMultipleObjects, a zatem rzeczywisty hServerPipe został pomyślnie utworzony.
W szczególności ten doskonały może być spowodowany irytacją w programie, której nigdy nie będę miał. Nie został opublikowany. Ale debugowanie było bardzo trudne dla mnie i moich rówieśników.Serwer Can w zasadzie obsługuje kilka ton re zadania. Nie ma błędów księgowych. I nagle określony klient po prostu nie może już podnieść. Jeśli mam instancję aktualizacji dotyczącą klienta
. Może nawet wygenerować 231. Wygląda na to, że serwer był martwy od dłuższego czasu
