Mam aplikację klient-serwer, która komunikuje się przez TCP/IP.
Używam obiektu typu System.Net.Sockets.Socket
do ascnyronicznej komunikacji przez TCP. Zasadniczo otwieram połączenia wysyłam/odbieram dane i zamykam połączenie. A moja implementacja opiera się na obiektach typu Socket.
Teraz potrzebuję użyć dll innej firmy by coś zrobić. Ta biblioteka DLL oczekuje obiektu typu System.IO.Stream
. Muszę więc uzyskać obiekt Stream obiektu Socket.
Jak mogę to zrobić?
Dziękuję.Otrzymuję strumień obiektu gniazda w C#
Odpowiedz
Bardzo proste naprawdę. Konstruktor klasy NetworkStream akceptuje gniazdo zawinąć:
http://msdn.microsoft.com/en-us/library/system.net.sockets.networkstream.aspx
// NOTE: This demonstrates disposal of the stream when you are
// done with it- you may not want that behavior.
using (var myStream = new NetworkStream(mySocket)) {
my3rdPartyObject.Foo(myStream);
}
to jest niesamowite :) nie mogłem myśleć w ten sposób. dzięki. – Fer
Na wypadek gdyby użytkownik tego strumienia chciał wywołać 'myStream.Close()', polecam skonstruować NetworkStream z prawem własności do gniazda: 'new NetworkStream (mySocket, true)'. W przeciwnym razie zastanawiasz się, dlaczego wątek blokujący operację odczytu jest nadal blokowany po zamknięciu strumienia. –
Spróbuj patrząc na System.Net.Sockets.SocketType.Stream?
Lub spróbuj spojrzeć na System.Net.Sockets.NetworkStream?
http://msdn.microsoft.com/en-us/library/system.net.sockets.networkstream.aspx
Dzięki John, odpowiedź @Chris Shain działa. Tego właśnie potrzebuję. – Fer
- 1. Dlaczego otrzymuję komunikat "Odmowa połączenia" w Pythonie? (Gniazda)
- 2. Strumień C++ jako zmienna składowa
- 3. C# - pytanie o strumień
- 4. C# Asyn. Programowanie gniazda
- 5. Strumień C++ do pamięci
- 6. Dodawanie danych do obiektu gniazda socket.io
- 7. C++ read() - z gniazda do strumienia od
- 8. jak konwertować strumień wejściowy do obiektu java
- 9. Gniazda, liczba dostępnych bajtów (C#)
- 10. Najszybszy sygnał C++ sygnału/gniazda bez zależności
- 11. Tworzenie podstawowego C/C++ gniazda TCP pisarza
- 12. Jak ograniczyć prędkość gniazda w C?
- 13. Zamykanie nasłuchującego gniazda TCP w C
- 14. Jak analizować strumień HTTP MJPEG w C++?
- 15. Strumień kodów Unicode z bajtów w C?
- 16. socket.io + Redis + expressjs klaster - pobranie obiektu gniazda w expressjs zażądać
- 17. zlib z C++ na C# (Jak konwertować bajt [] na strumień i strumień na bajt [])
- 18. Czy gniazda są zintegrowane ze standardem C++?
- 19. Qt i C++ - niezdefiniowane odniesienie do gniazda
- 20. Pisarz XML i strumień pamięci C#
- 21. Strumień bajtów i strumień znaków
- 22. C otrzymuję wszystkie otwarte deskryptory plików
- 23. wygenerować losowy strumień bajtów z `C`
- 24. Utwórz strumień <T> z pojedynczego obiektu
- 25. Jak uzyskać strumień wejściowy z obiektu HSSFWorkbook Object
- 26. Utwórz niezarządzanego obiektu C++ w c #
- 27. Jak asynchronicznie przekierować TYLKO standardowy strumień błędów, a nie standardowy strumień wyjściowy procesu w C#, .net
- 28. Zakres obiektu wyjątku w C++
- 29. Rodzaj obiektu Cast w C#
- 30. C/C++ Kod traktujący tablicę znaków jako strumień bitów
Należy zachować ostrożność podczas mieszania gnieździe i Stream - instancja gniazdo jest threadsafe - instancja strumień nie jest! – weismat