Như chúng ta đã đề cập trước đó, một số chức năng tiên tiến hiện có sẵn chỉ trong lớp Socket và không phải là cấp độ cao hơn lớp ổ cắm như TcpClient. Shutdown () của lớp Socket là một ví dụ về một tính năng mà không phải truy cập trực tiếp trong lớp TcpClient. | Asynchronous I O 121 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 private byte byteBuffer private Networkstream netStream private StringBuilder echoResponse private int totalBytesRcvd 0 Total bytes received so far public ClientState NetworkStream netStream byte byteBuffer netStream byteBuffer echoResponse new StringBuilder public NetworkStream NetStream get return netStream public byte ByteBuffer set byteBuffer value get return byteBuffer public void AppendResponse String response response public String EchoResponse get return public void AddToTotalBytes int count totalBytesRcvd count public int TotalBytes get return totalBytesRcvd 122 Chapter 4 Beyond the Basics 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 class TcpEchoClientAsync A manual event signal we will trigger when all reads are complete public static ManualResetEvent ReadDone new ManualResetEvent false static void Main string args if 2 3 Test for correct of args throw new ArgumentException Parameters Server Word Port String server args 0 Server name or IP address Use port argument if supplied otherwise default to 7 int servPort 3 args 2 7 Thread 0 1 - Main Create TcpClient that is connected to server on specified port TcpClient client new TcpClient server servPort Thread 0 1 - Main connected to server NetworkStream netStream ClientState cs new ClientState netStream args 1 Send the encoded string to the server IAsyncResult result 0 new .