CSDN论坛 > Delphi > 网络通信/分布式开发

socket如何在发送数据之后把发送缓冲区的数据删除 [问题点数:20分,结帖人iwillgo2]

Bbs2
本版专家分:124
结帖率 100%
CSDN今日推荐
Bbs1
本版专家分:42
Bbs2
本版专家分:151
Bbs10
本版专家分:182284
Blank
进士 2004年 总版技术专家分年内排行榜第六
Blank
银牌 2004年4月 总版技术专家分月排行榜第二
Blank
红花 2006年1月 Delphi大版内专家分月排行榜第一
2005年12月 Delphi大版内专家分月排行榜第一
2005年11月 Delphi大版内专家分月排行榜第一
2005年10月 Delphi大版内专家分月排行榜第一
2005年6月 Delphi大版内专家分月排行榜第一
2004年10月 Delphi大版内专家分月排行榜第一
2004年9月 Delphi大版内专家分月排行榜第一
2004年8月 Delphi大版内专家分月排行榜第一
2004年7月 Delphi大版内专家分月排行榜第一
2004年6月 Delphi大版内专家分月排行榜第一
2004年5月 Delphi大版内专家分月排行榜第一
2004年4月 Delphi大版内专家分月排行榜第一
2004年3月 Delphi大版内专家分月排行榜第一
2003年12月 Delphi大版内专家分月排行榜第一
2003年11月 Delphi大版内专家分月排行榜第一
Blank
黄花 2006年4月 Delphi大版内专家分月排行榜第二
2005年5月 Delphi大版内专家分月排行榜第二
2005年4月 Delphi大版内专家分月排行榜第二
2005年3月 Delphi大版内专家分月排行榜第二
2005年2月 Delphi大版内专家分月排行榜第二
2004年12月 Delphi大版内专家分月排行榜第二
2004年2月 Delphi大版内专家分月排行榜第二
匿名用户不能发表回复!
其他相关推荐
阻塞和非阻塞套接字一次可以发送多大的数据量
我们应该知道无论是阻塞还是非阻塞,其调用send来发送数据的实质是将应用程序缓冲区的数据拷贝到socket缓冲区中,然后协议栈对这些数据进行发送,也就说send就是拷贝。因此我之前的理解是:对于套接字发送数据(阻塞和非阻塞),其一次发送的数据量不能大于socket缓冲区的大小。 在当前项目中使用的是非阻塞套接字,并且将socket的发送缓冲区大小设置为1M,以防止较大量的数据发送。现在遇到了一个
send和recv只是内核缓冲区和应用程序缓冲区之间的搬运工---严格来讲send和recv并不具备发送和接收功能
谈到网络socket编程, 我们不得不提两个基本也很重要的函数:send和recv.  对socket编程理解不深的童鞋容易产生这样一个错误的认识: send函数是用来发送数据, 而recv函数是用来接收数据的, 其实, 这种观点是稍微有点偏颇的, 掩盖了本质。        下面, 我们看一幅图, 了解一下send和recv函数所处的位置(这幅图是我在网上找的, 不太清晰, 请凑合看一下):
小结:关于socket读写缓冲区
关于socket的发送缓冲区网上有诸多的讨论,这里个人小结一下,希望对以后有些帮助。首先,看下面一段代码,//设定socket参数#define dfUdpRcvCacheSize  256*1024 //256//接收缓冲区大小(字节) int optval,optlen = sizeof(int); optval=dfUdpRcvCacheSize; //设置读缓冲区   err=se
当接收端的内核缓冲区中的数据没有全部交给应用程序时, 如果接收端关闭socket(比如调用close或者进程挂掉),就会回以RST报文
在通常情况下,  调用close的时候, 会发FIN包, 但是, 如果接收端没有用recv把内核缓冲区的数据取完, 却执行了关闭socket的操作(比如调用close或者进程挂掉), 那么这就是异常的情况, 此时接收端会回RST报文。         我们来看看, 服务端程序为: #include #include #include #include #include #includ
TCP/IP详解--举例明白发送/接收缓冲区、滑动窗口协议之间的关系
一个例子明白发送缓冲区、接受缓冲区、滑动窗口协议之间的关系。 在上面的几篇文章中简单介绍了上述几个概念在TCP网络编程中的关系,也对应了几个基本socket系统调用的几个行为,这里再列举一个例子,由于对于每一个TCP的SOCKET来说,都有一个发送缓冲区和接受缓冲区与之对应,所以这里只做单方向交流,不做互动,在recv端不send,在send端不recv。细细揣摩其中的含义。 一、recv端
使用Socket类接收和发送数据
网络应用分为客户端和服务端两部分,而Socket类是负责处理客户端通信的Java类。通过这个类可以连接到指定IP或域名的服务器上,并且可以和服务器互相发送和接受数据。在本文及后面的数篇文章中将详细讨论Socket类的使用,内容包括Socket类基础、各式各样的连接方式、get和set方法、连接过程中的超时以及关闭网络连接等。     在本文中,我们将讨论使用Socket类的基本步骤和方法。一
对Socket CAN的理解(3)——【Socket CAN发送数据流程】
转载请注明出处:http://blog.csdn.net/Righthek 谢谢!     对于本文,我们将从用户层使用Socket CAN进行数据发送时,数据从用户空间到底层驱动的整个通信流程,用户层使用Socket CAN可参考上一篇文章《对Socket CAN的理解(2)——【Socket的原理及使用】》。     当我们在用户层通过socket进行CAN数据的发送时,需要进行以下操
如何获取SOCKET 发送缓冲区使用大小
问题描述:socket编程,发送少量数据时,send/write等发送函数会立即返回成功,发送的数据会存在TCP发送缓冲区中,依靠TCP协议栈自身的重传机制来保证该数据 被接收端收到;我们的问题是 发送端应用程序 如何判断 少量数据 已经成功发送到接收端? 解决思路:发送数据存在缓冲区中,我们判断发送缓冲区大小变化,即可获知发送是否成功;具体方法如下:发送数据后,获得已使用缓冲区大小buf,
Qt套接字缓冲区数据如何清空?
readAll( )
设置SOCKET的发送与接收缓冲区
主  题: 浅析:setsockopt()改善程序的健壮性 作  者: gdy119 (夜风微凉) 不断的收到coolmei25 (梅生)的答谢,我都不好意思了(我都没帮到他),下面 写出我在网络编程中的一点心得体会,希望对他(^_^也对大家)有帮助: 1. 如果在已经处于 ESTABLISHED状态下的socket(一般由端口号和标志符区分)调用 closesocket(一
关闭