Rozumiem, że TcpClient jest wrapper wokół klasy gniazda, i mogę uzyskać dostęp do podstawowego gniazda, jeśli korzystam z TcpClient, ale co dokładnie robi opakowanie?Jakie są zalety bezpośredniego używania TcpClient przez gniazdo?
Podczas korzystania z protokołu TCPClient muszę wywoływać funkcję Receive(), tak jak robię to przy użyciu gniazda lub czy opakowanie zapewnia wyświetlanie wszystkich moich danych?
Wreszcie mogę użyć TcpClient zarówno serwera i klienta do owijania gniazdo (po użyciu TcpListener zaakceptować oryginalne połączenie na serwerze)
Ah Widzę. Więc mam rację mówiąc, że odpowiednik wykonywania _BeginReceive(), a następnie EndReceive(), przechowywania bajtów i wywoływania BeginReceive() ponownie, aż do otrzymania receive_ na gnieździe, można wykonać za pomocą _myTcpClient.GetStream(). BeginRead() _ na TcpClient? Czy funkcja BeginRead() nie wywoła wywołania zwrotnego EndRead(), dopóki nie zostanie odebrana określona liczba odebranych bajtów? (usunięcie potrzeby ciągłego wywoływania BeginRead()/BeginReceive() aż do otrzymania wszystkich oczekiwanych bajtów) – Dermot
Wolałbym używać metod 'Read' i' Write' klasy 'NetworkStream' zamiast' BeginRead' i 'EndRead' ponieważ nie będziesz musiał jawnie wywoływać poleceń "BeginRead" i "EndRead", zrobi to za Ciebie. Zobacz kilka przykładów w Internecie, takich jak ten http://msdn.microsoft.com/en-us/library/system.net.sockets.tcpclient.getstream.aspx –
Dzięki za wyjaśnienie tego dla mnie. – Dermot