# PCAP Debugging Example This example demonstrates how to use the `NIOWritePCAPHandler` from [NIOExtras][swift-nio-extras] with gRPC Swift. The example configures a client to use the `NIOWritePCAPHandler` with a file sink so that all network traffic captured by the handler is written to a `.pcap` file. The client makes a single bidirectional streaming RPC to an Echo server provided by gRPC Swift. The captured network traffic can be inspected by opening the `.pcap` with tools like [Wireshark][wireshark] or `tcpdump`. ## Running the Example The example relies on the Echo server from the gRPC Swift repository. To start the server, from the **root of the gRPC repository** run: ```sh $ swift run Echo server 0 ``` Note the port printed by the server. In a separate shell, in **this** directory run: ```sh $ swift run PCAPExample localhost ``` Some logs should be emitted similar to below, including the path of the *.pcap* file: ```sh 2020-07-24T10:48:50+0100 info gRPC PCAP Demo : Creating fileSink for path './channel-ObjectIdentifier(0x00007f8a25604c40).pcap' 2020-07-24T10:48:50+0100 info gRPC PCAP Demo : ✅ Successfully created fileSink for path './channel-ObjectIdentifier(0x00007f8a25604c40).pcap' ... 2020-07-24T10:48:50+0100 info gRPC PCAP Demo : ✅ RPC completed successfully ... 2020-07-24T10:48:50+0100 info gRPC PCAP Demo : Done! ``` The *.pcap* file can be opened with either: [Wireshark][wireshark] or `tcpdump -r `. [swift-nio-extras]: https://github.com/apple/swift-nio-extras [wireshark]: https://wireshark.org