问题
Does recv() call intercepts data in packets or can i get data packets with timestamps?
回答1:
On a datagram socket (like UDP), recv
gets data in datagrams. TCP is a stream-mode socket, however, and recv
gets a collection of bytes with no regard for packets.
It's possible, using low-level APIs, to get the packets, but if you were hoping to see boundaries between send
calls you are out of luck... that information is not present in the packets.
回答2:
Recv gets data from a socket that has been successfully received. It does not tell you when that happened; i.e. no timestamp.
Would you elaborate on what problem you're trying to solve ("why do you need this?") instead of your attempted solution? (Or have I completely misunderstood your question?)
回答3:
If your own code is sending data to the remote machine where you are receiving data...then you can make you r own application level data format...such as sending the data after sending timestamp (some specified number of bytes).
This information can be extracted at the receiving end. Although as mentioned connection is TCP ...the data would be in stream format not as a complete packet as in case of UDP.
来源:https://stackoverflow.com/questions/5048203/receiving-data-in-packets-on-tcp-client