摘录于javaeye的问答:
问题描述:一个服务端,一个客户端。客户端往服务端传文件,具体 细节不说了,客户端发给服务端的是文件处理后的定长数据报文(由 数据报文头和数据报文体组成,其中报文头里约定了客户端发送多少 个定长报文后,服务端要往回发一个确认包,然后客户端才继续发送 定长报文)。服务端每接收一个数据报文先对其处理(拆包,写入文 件等),然后接收下一包,如果到了约定发送确认包的数量时发送一 个确认包给客户端。
问题:在传小文件的时候没问题,但是在文件稍大一些的时候(4-10M )就出问题。我现在发送的报文是两包一个确认,问题出现在服务器 接收每批第2包的时候,收不到数据,但是客户端那边显示已经发送, 正等待确认,所以陷入了阻塞。但是这个问题不是一直出现,每次出 现也不是在固定的位置。不知问题出现在哪儿?
抓出来的包:
该问题已经关闭: 今天终于找到问题所在了,因为我在每次接收一包数据的时候都是new一个DataInputStream,
服务器发送的快的时候可能在我new一个输入流之前已经发了数据,而我还没有得到输入流,这样就造成了丢包现
象。 我在服务器端发送的时候加一个延时,出错的概率就会减少。但在我们不能控制服务端的时候这个方式就不好了。
所以最好的解决办法就是我们在建立Socket连接的时候,就取得输入、输出流。在以后每次收发数据的时候就一直用这个输入输出流,
这样在批次确认的数据传输中就不会有丢包了。
分享到:
相关推荐
在"基于UDP SOCKET 统计丢包率"的项目中,我们采用C/S(Client/Server)模型进行通信。客户端(Client)发送数据报到服务器(Server),而服务器则回射这些数据报给客户端。通过比较发送的数据报数量和接收到的数据...
你真的会用socket UDP吗? UDP丢包得厉害,怎么解决? 我先给你讲UDP的理论,再告诉你解决办法,省得直接告诉你答案反而说太短
UDP(User Datagram Protocol)是一种无连接的传输层协议,它提供了...综上所述,UDP丢包率测试工具通过UDP Socket通信机制,提供了一种简单而有效的评估网络丢包状况的方法,对于网络性能的调试和优化具有重要意义。
ATKKPING是一款网络丢包测试工具,主要用于评估和诊断网络连接的质量。该工具以其1.9.9.9绿色中文版的形式提供,意味着它无需安装,用户可以直接运行,且界面和帮助文档都采用中文,方便中国用户使用。下面将详细...
- KB2577795: 另一个可能导致该问题的补丁,解决系统socket泄露的问题 - KB976932: windows server 2008R2 的SP1更新包,涵盖了上述两个补丁,比较大,可在官网下载:...
- **定位问题**:通过查看数据包内容,找出通信过程中可能出现的错误,如丢包、乱序、重复数据等问题。 - **性能优化**:分析数据传输速率,优化网络通信的效率。 - **安全检查**:检查是否存在未授权的访问或者恶意...
socket连续send会发送失败 看似丢包 什么原因 怎么解决.zip
在实际操作中,该方法首先使用Python语言的socket模块进行计算机网络内部丢包节点的端口扫描,特别是关注传输层UDP协议端口,如80、443和65535等代表性的端口。通过TCP开放式扫描,进一步确定可能产生丢包行为的端口...
Linux 应用程序 UDP 数据丢包解析 在 Linux 中,一个以太网包的收包流程路线是:网卡驱动收到包,触发软中断,协议栈处理,然后将包放到对应的 Socket 缓冲区,最后唤醒等待进程从内核 Socket 缓冲区中拿包。然而,...
此外,模拟不同的网络条件,如延迟、丢包和带宽限制,可以帮助测试程序在不稳定环境下的表现。 在压缩包"新建文件夹 (2)"中,可能包含有这些测试工具或示例代码。例如,可能有Python的socket服务器和客户端脚本,...
头歌UDP Ping程序实现-服务端模拟丢包事件头歌UDP Ping程序实现-服务端模拟丢包事件头歌UDP Ping程序实现-服务端模拟丢包事件头歌UDP Ping程序实现-服务端模拟丢包事件头歌UDP Ping程序实现-服务端模拟丢包事件头歌...
- UDP数据包是否到达目标,丢包情况如何。 - 网络延迟和带宽限制对通信的影响。 此外,SocketTool还可以用于测试网络环境的稳定性,以及与其他网络设备或应用的兼容性。通过这个工具,开发者可以更直观地了解Socket...
例如,我们可以创建包含不同大小和类型的二进制数据包,模拟网络丢包或延迟等情况,确保程序在各种条件下都能正确地发送和接收数据。 文件名“包的测试”可能包含了用于测试的C语言源代码,这些代码可能涉及到上述...
同时,工具可能还提供了接收数据的界面,显示接收到的数据包,以及相关的统计信息,如传输速率、丢包率等。 在开发过程中,SocketTool可以帮助解决以下问题: 1. 验证网络连接:检查TCP或UDP连接是否正常,排查网络...
标题“udp_file_tx.rar_ udp_file_tx_udp tx linux_丢包率”暗示了这是一个关于在Linux环境下使用UDP协议进行文件传输的主题,其中特别关注的是在良好网络条件下的丢包率问题。UDP(User Datagram Protocol)是一种...
使用SocketTool,你可以检查在UDP通信中是否出现丢包、乱序等现象,优化网络性能。 在使用SocketTool时,你可以执行以下操作: 1. 创建TCP连接:输入目标IP地址和端口,发起连接请求,查看连接建立过程中的问题。 2...
本示例“iOS Socket 使用Demo”将介绍如何使用GCDAsyncSocket库来构建一个简单的Socket应用,并解决丢包问题。 首先,我们需要了解Socket的基本概念。Socket是网络通信中的一个端点,它提供了进程间通信(IPC)的...
为了保证案例的可行性,图片的大小需要限制在TCP连接允许的范围内,同时考虑到网络延迟和丢包等情况,可能需要实现重传机制或者错误检测策略。此外,这个案例可以作为基础,进一步扩展到更复杂的应用场景,比如文件...
这有助于开发者理解和调试网络应用的行为,例如检查数据是否正确发送,排查网络延迟或丢包问题,以及发现潜在的安全问题。 常见的抓包工具有Wireshark、Tcpdump和Microsoft Network Monitor等。Wireshark是最受欢迎...
5. **错误检测**:提供错误检查机制,帮助定位网络异常或编码错误,比如丢包、乱序、重复等问题。 6. **协议分析**:对于TCP/IP协议栈的各个层次进行解析,包括IP、TCP、UDP等,便于理解协议执行过程。 7. **多...