2 l108103t l108103t 于 2016.03.16 16:47 提问

如何确保tcp的数据已经成功发送到了目的地

当用tcp协议发送数据时,write函数只是确保把数据写到了socket的套接字缓冲区之中,
然后write函数就返回了。如果说最终socket没有成功发送数据,怎么办?会有什么提示吗?
比如说发个信号什么的??

3个回答

caozhy
caozhy   Ds   Rxr 2016.03.16 18:16

tcp不需要,因为握手成功肯定是建立连接的,你socket发送数据肯定能收到,否则会丢出错误。

luochoudan
luochoudan   Ds   Rxr 2016.03.16 17:12

两个不是一个东西,tcp保证你连接,socket传数据。如果因为连接导致发送失败,有异常抛出。

wtucsjianghua
wtucsjianghua   2016.03.16 18:00

tcp协议确保了两个应用程序之间的连接;socket负责发数据包,如果tcp连接失败,数据包是发不出去的(程序会异常),tcp连接成功,数据包能发送,但对方不一定能接受(与传输时的网络拥堵情况有关系),有丢包或者漏包的情况,要想保证对方能正确接受,你要用代码去控制,确保每个包都能接受,没接到的包要求重传

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
如何判断TCP数据包是否发送成功
如何判断TCP数据包是否发送成功 (2013-11-02 22:44:01) 转载▼ 标签: tcp数据发送 成功 tcp 分类:tcpip 问题描述:socket编程,发送少量数据时,send/write等发送函数会立即返回成功,发送的数据会存在TCP发送缓冲区中,依靠TCP协议栈自身的重传机制来保证该数据 被接收端收到;我们的问题是 发送
qt windows下使用tcpsocket,连接上了,但是数据发不出去?
其实并不是发不出去。而是会阻塞,等到缓冲区满了才会发回去。   之前出现的提示[LspTrace]ReadAccConfig returns false!等这三句话其实并不影响数据的传输。
如何判断TCP包是否发送成功
原文地址:http://blog.csdn.net/ordeder/article/details/17240221 1. TCP发送接口:send()   TCP发送数据的接口有send,write,sendmsg。在系统内核中这些函数有一个统一的入口,即sock_sendmsg()。由于TCP是可靠传输,所以对TCP的发送接口很容易产生误解,比如sn = send(...);
TCP是如何保证数据的可靠传输的
TCP是如何保证数据的可靠传输: 1、TCP在传输有效数据之前要求通信双方必须先握手,建立通信才可以进行数据传输! 2、TCP的接收在接收到数据包之后会发送ack(可以理解为“回复消息”)给发送方,如果发送方未收到ack,会重发一遍! A给B发送数据,会有以下几种情况: 1、B没有收到A发送的消息;==》B就不会给A回复ack;===>A就不会收到ack==》A会认为数据没有发送成功===
TCP的数据发送和接收
TCP通信的单位是一个报文,TCP报文包括报文头部和数据部分,头部最少占用20个字节。运用TCP协议进行通信前需要建立连接(三次握手),数据传输完成后,最后需要断开连接(4次握手)。          TCP发送缓存和接收缓存,TCP发送窗口和接收窗口,以及拥塞窗口。          TCP的可靠传输是通过滑动窗口来实现的。TCP的滑动窗口的单位是字节的。          发送窗口中是表
TCP发送接口(如send(),write()等)的返回值与成功发送到接收端的数据量无直接关系 .
转自:http://blog.csdn.net/ordeder/article/details/17240221   1. TCP发送接口:send()         TCP发送数据的接口有send,write,sendmsg。在系统内核中这些函数有一个统一的入口,即sock_sendmsg()。由于TCP是可靠传输,所以对TCP的发送接口很容易产生误解,比如sn = send(...);
TCP协议依据哪个选项来确保数据的有序传输
 A.       序号B.       确认号 C.       端口号 D.       校验和
TCP/IP是如何通讯的?信号如何让通过TCP/IP网络到达目的地的?-入门篇(协议帝请绕道)
TCP/IP是如何通讯的?信号如何让通过TCP/IP网络到达目的地的
自己写了个连接socket服务的功能,连接成功后向服务发送数据并接收数据
1、ConnectToServerByTcp 这个方法是连接socket服务的// 直接上代码public static Socket ConnectToServerByTcp(String serverIp, int serverPort, int timeOutSecond, int connectCS) { log.info("-------主动连接socket通讯 ");// 建立
TCP如何保证发包顺序
TCP提供了最可靠的数据传输,这是因为它给发送的每个数据包做顺序化