繁体   English   中英

C语言中的TCP

[英]TCP in C Programming

我想知道客户端或服务器在C编程的TCP通道中发送数据包后如何从客户端或服务器获取确认数据包。

为什么我不需要在代码中处理此问题? 如果客户端将数据包发送到服务器,则客户端如何准确地接收到确认包? 这是内部发生的吗?

TCP协议旨在提供流协议。 典型的编程接口是套接字接口,您可以在其中提供协议栈将传输到接收器的大量数据。 当数据已在接收协议堆栈中排队或已移交给接收应用程序时,实际的实现隐藏。 您将做出这种区分。

您显然想要的是一种信号机制,它可以知道客户端何时从协议栈读取数据。 这可以通过在TCP协议之上设计和实现协议来完成。 当一方不必发送有意义的数据时,它会发送心跳消息。 此消息表明TCP连接仍然有效。

关于您的问题:

  • 为什么我不需要在代码中处理此问题? 因为底层已经为您完成了。

  • 如果客户端将数据包发送到服务器,则客户端如何准确地接收到确认包? 只要您不需要心跳,就不需要关心。 TCP为您提供类似于文件I / O的流接口。 您不问,数据何时离开磁盘缓存,对吗? 当您开始重新实现内部时,您将必须定义关于重组,Nagle算法和许多其他令人讨厌的事物的内容。 如果您还有其他选择,请不要实施TCP。

  • 这是内部发生的吗? 是的,幸运的是。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM