android socket问题,第一次发数据很慢

我建立的socket在刚连接上网络助手的时候,为什么第一次发消息很慢(很少情况下能正常发送)第一次发送成功后再发送就很快。我知道应该和socket的内部实现机制有关,但不知道为什么。有没有大神帮解释下?谢谢,谢谢,谢谢。下面是发送数据的代码,发的数据是十六进制。

public void send_data(){
String temp = "";

            try {
                    out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(Caller.socket.getOutputStream())),true);
            } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
            }                        
            for(int i=0; i<data.length; i++)
            {
                    temp +=(char) data[i];
            }
            out.printf(temp);
            //out.println(data);

    }
0

4个回答

我个人的理解:TCP是面向连接的通信协议,通过三次握手建立连接,刚开始建立连接的时间较长,而完成连接之后,就只需要发送东西。

0

抓包看看 ,是在建立连接的时候慢,还是真正的在发送第一包数据的时候慢。

0
max_min_
max_min_ 回复升2: 你是如何知道第一次很慢的呢?抓的数据截图出来看看,怀疑是不是建立连接成功到发送数据之间哪里阻塞了?
大约 4 年之前 回复
u013033086
升2 建立连接的时候挺快的,就是第一次发数据的时候很慢才能发出去,只要第一次发送完了,再发就很快了。
大约 4 年之前 回复

我觉得应该是你的程序造成的问题,而不是所谓的第一次发送慢

0
u013033086
升2 我程序也挺简单的,就是在另一个线程连接socket,连接成功以后在UI界面线程里点发数据按钮,此时按钮会按下一会(2~10S不定),数据发送完了弹起来。这一次发过后再发就发的很快了
大约 4 年之前 回复

网络数据如果你这里没有控制速度肯定是对方控制的,第一次说明连接花费时间很长,问题应该出在你的网络助手上,自己写个demo调试一下

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
TCP协议下Socket接收比较慢点原因
https://support.microsoft.com/zh-cn/kb/214397设计问题-通过使用 Winsock TCP 发送较小的数据段 n 电子邮件 n 打印 n重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社
android WIFI Socket 文件传输——问题已经解决了,发帖只因高兴--嘿嘿--并不彻底欢迎点评
本来是一个问题贴,最终因为太长了,只能搞成博客了。算是做个记录吧nnnn我的这个Socket是想保持一个长连接,文件可以循环传输n但是我的问题在于,不能抓住文件传输完成的这个时机,导致异常nn我的文件发送代码n[code=java]npublic void sendFile(String filePath)n    {n        tryn        {
安卓APP首次连接服务器非常慢的问题分析
近期项目中的安卓端App,客户反馈有登录连接慢,耗时长的问题.在测试验证后,有以下分析:n出现条件nn使用https连接的正式服务器环境.n安卓手机.n使用中国电信手机卡的流量进行连接.nApp冷启动.nn在同时满足以上4点条件的情况下,安卓用户会出现App登录很慢的情况.登录是首次连接,从请求到响应需要30s左右的时间.登录成功后,后续请求连接的速度恢复正常.n问题分析和解决尝试nn正式环境下,...
vue关于首次加载很慢的优化方式
说方法之前肯定得搞清楚什么导致了项目首次加载慢,我看了打包过程,然后发现字体文件过大,这是其一,还有我引入了echarts三方库,这是其二,打包后发现vendor.js文件过大,这是其三,整个项目加载app.js之前首先得加载vendor.js和app.css,所以vendor.js文件过大会造成项目加载特别慢。好原因我知道了,然后就对症下药。。。。。。。。。nn对于我使用的特殊字体文件我使用的是...
关于Android studio第一次创建工程时加载过慢的解决方法
在进行Android开发的时候,原来使用的是Android studio2.1版本的,突然心血来潮,去官网下了一个最新版本的。突然之间遇到许多问题。第一个问题就是第一次创建工程时加载过慢。rn在网上查找了许多方法,自己也试了许多方式,最后总结出以下几点:rn1.因为国内某些原因,导致Android studio无法连接到Android官网,所以下载重要工具gradle时会变得非常非常慢,如果觉得自
解决Android Studio第一次导入第三方工程超级慢的方法总结
1.场景分析n  前几天,由于电脑重装系统了,所以重新安装leandroid环境;安装成功后,突然发现导入第三方工程十分慢,我甚至怀疑AS是不是死了,其实他是假死,他是在为你卖命的下载gradle,无奈,下载gradle往往得自备云梯。下面就自己的经验向大家介绍解决编译龟速的问题。n2.方法总结n①手动修改待导入工程的属性n这种方法得知道已经安全导入工程的属性,然后一一对应的复制到待导入工
Android socket通过UDP的方式发送,接收数据
Android通过广播的方式来发送和接收数据,从而进行手机间的通信。发送方:public class SendToAIUIUtils {n private static InetAddress mAddress;n private static DatagramSocket socket = null;n private static String ip = &quot;255.255.25
【Android学习】socket长连接,数据粘包问题
1,问题再现之前的socket连接,都是每次使用的时候,重新new socket。根据实际需求,需要进行长连接,即:socket连接后不断开,每次使用的时候也不重新new新的socket。此时出现新的问题:第一次发送数据还好,第二次接收到的数据出现粘包问题,导致json解析数据无法成功。2,问题解决上网搜了无数帖子,发现socket的粘包问题始终无法避免。最后我们采用了http来进行登录、任务的接收
socket接受数据缓慢或者丢包严重
前情提要:我新到一个公司,这个代码之前是外包出去的,现在由我继续开发,然后新买了一台服务器,老服务器就跑的外包项目,新服务器上就跑的我接着开发的,在新服务器上就出现了socket接收数据丢包严重的情况,但是都是局域网传的,甚至就是那台服务器的socket发出的数据都丢包严重。然后我就对比代码,发现那段代码一点都没改,然后把老服务器的代码拿过来也变慢了,这就尴尬了。所以我把这个问题简称为由于服务器性...
android程序第一次安装第一次启动巨慢
android程序第一次安装第一次启动,大概要等5-10秒的样子才能进入应用,之后再不会出现问题。
APP第一次请求HTTPS慢
APP由HTTP升级为HTTPS后,出现一个奇怪的现象:打开APP后立马点击HTTPS请求会比正常情况下慢3-4倍,而在打开APP一秒后再点击请求,则请求速度正常。奇怪的是本地测试完全正常。rn|---------------------------------------|rn|本地HTTP | 正常rn|rn|---------------------------------------|rn
解决冷启动电脑后第一次读取Sqlite数据库缓慢的问题
转载请说明原出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/77482985最近项目中得到用户反馈,说每次重启电脑后,软件界面的数据加载都非常慢。这些数据都是软件启动后从Sqlite数据库读取的。我开始以为是代码有什么地方优化的不够好,出现了瓶颈,后来反复实验发现只有冷启动后第一次打开软件会出现这种情况。后来咨询网友,又查了资料,发现...
关于android studio首次开启项目打开很慢解决办法
关于android studio首次开启项目打开很慢解决办法相信很多人在网上拉代码下来用as打开时,总是要等很久很久,提示框中会显示一个bulding。。gradle啥啥啥的,昨天一个朋友刚接触as也遇到了这个问题,在这里做个记录,希望可以帮到别的朋友解决方式一:(1)打开你已经开起来过的项目,找到gradle下的文件gradle-wrapper.properties-》distributionUr
一个TCP发送小数据延迟的问题
TCP Nagle 算法
第一次连接数据库时速度很慢问题解决
问题描述:nn 在web容器加载完毕后,调用接口时,init连接池时,速度很慢nnnn速度可能在1分钟左右,主要是因为它会先去查询DNS,然后再连接。nn解决方案:在mysql的配置文件中配置skip-name-resolvenn结果:速度有明显提升nnnnn具体步骤:nn1.查找到mysql的配置文件 (这里我是在/etc/my.cnf)nnnn2.修改配置文件nn主要是在 ...
AndroidStudio安装后首次加载慢处理
之所以加载慢,是因为要下载SDK组件,其实现在我们都可以直接用现成的网上下载SDK包,解压直接用(解压后记得在系统配置好环境变量和验证,如果验证出问题可以参考文章https://mp.csdn.net/postedit/80768726)nn接下来就说安装完成后的步骤,安装完成后我们点击完成,然后就会启动Android Studio(忘记存图,直接用百度经验图哈哈)nnnnnn到了这里,如果你此时...
Android Socket通信 发送心跳包 重连
最近项目中,有使用Socket与后端进行通信,然后简单的了解了下Socket使用,大致流程是配置服务端的Ip、端口号,连接,监听数据和发送数据,数据的读取和发送都是以流的形式实现的,然后自己将项目中的代码写了简单的管理类,测试下代码。下面是demo的两个界面,连接和发送接收界面nn nnnnnn这里使用了一个Tcp调试助手,模拟服务端发送和接收数据,通讯模式选择TcpService ,本地端口随意...
解决java Socket慢的问题
最近本人在业余时间想使用socket写一个访问网页的工具类,用来了解http。在编写过程中发现,一个大概是5k的图片,用代码去下载时候用了足足30秒,但是在浏览器中访问同一个链接的时候只用了3ms,这个中间的差距我实在不能够接收。我是做了什么,我编写的代码这么慢。经过我在谷歌上搜索发现read()方法当读取完数据之后就开始阻塞,等待返回-1结束,这个等待的过程占到了总时间的99%。可是如果不等待怎么
Android Studio -- Gradle Sync缓慢,第一次打开Android studio缓慢,打开从github上拉取的项目缓慢等解决办法
Gradle Sync缓慢,第一次打开Android studio缓慢,打开从github上拉取的项目缓慢等解决办法
用Android Studio 创建Socket客户端向单片机发送数据——笔记
用Android Studio 创建Socket客户端向单片机发送数据功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入rn...
【Android】socket client发送一个字符串
为了尽量简单化,PC端使用调试工具做server,收到手机端发过来的数据效果如下 rnrnrn为了避免常识性错误,所以一般我先写权限,在AndroidManifest.xml中添加如下权限rnrnrnrnrnmanifestrn xmlns:android=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;rn package=&amp;quot;com.bm.printer0105&amp;quot;
用Androidstudio 第一次创建项目慢和Copy的Android项目编译缓慢的问题
#第一次使用android studio 创建项目 编译缓慢和从别的地方copy的项目编译漫长的解决思路nn在https://developers.google.cn/登陆国内以后很多sdk等资源都可以直接通过andrioid studio下载了nn但是为啥创建项目编译还是那么缓慢呢.主要原因是我们缺少项目编译需要的gradle版本nn打开你创建好的项目的这个文件 %you project%\gr...
Java 爬虫解决readline 读取缓慢问题
传统的使用URLconnection做连接之后通常使用in.readline()来获取网页代码。显而易见的是这种方法效率奇低。我简单的做了一下比较 Python time:0.205786745268 s =205ms 传统 readline() time: 1975ms charBuffer time: 265 mstry {n // 将s
Android之Socket编程:发送十六进制数据
要发送向服务器发送十六字节的数据可以采用以下的方式:1.数据类型是byte型:n private byte[] msg = new byte[2];2.给数据赋值:nmsg[0] = (byte) 0xaa;nnmsg[1] = (byte) 0xdd;nn3.在socket中使用write的方式:nOutputStream socketWriter = socket.getOutputStrea...
SpringBoot多数据源从库第一次执行SQL很慢的原因
n n n 今天开发时偶尔发现从库的第一次SQL执行的速度很慢,所以就进行了一系列排查,后来发现是因为多数据源的情况下,从库都是采用懒加载的形式进行加载的,所以就会出现第一次执行SQL很慢的现象,可以从以下两点进行证明:证明一这是项目刚启动的时候,主库进行了初始化:nnnnnn而当访问到从库时,第二个数据源才会进行初始化:nnnnnn证明二因为我是用Druid作数据库...
EF第一次加载较慢的原因以及解决方法(汇)
前言: n    这个问题没有遇到过,但是面试当中很可能会被问到,当然也不主要是为了应对面试,学到知识才是王道为什么会慢:    在应用程序中定义的每个上下文,其首次使用时,JUST-INTIME编译器:Entity Framework都会根据数据库中的信息在内存中生成一个映射视图(mapping views),这个操作非常耗时。定义的每一个上下文都会受此困扰n 1、Code First第一次启动
webview加载外部链接超级缓慢解决方案
nprivate class InsideWebChromeClient extends WebChromeClient {n private View mCustomView;n private CustomViewCallback mCustomViewCallback;nn @Nullablen @Overriden pu...
连接第一次连接MySqL数据库 相当慢
使用Java程序连接MySql数据库时,发现启动相关慢。n对代码进行测试,发现第一次连接时较慢。n以前用C++连接Oracle时,也遇到类似的问题。n当时找到原因是由于Oracle对连接进行了域名解析,由于DNS服务器不可达,要等到连接超时后,才抛出异常。详细信息请参考nhttp://blog.csdn.net/lijing_lj928/article/details/46953085 点
解决Webservice第一次访问特别慢的问题
最近做一个项目遇到首次加载webservice的时候特别慢,于是Google一番,得到结果是nnn n n n n n n原理是:由于web代理默认是开启的,也就是HttpWebRequest.DefaultWebProxy的值不为null,而这个DefaultWebProxy是一个全局变量。故第一次调用webservice方法的时候只有等这个默认
Socket连续读取两次数据
实现功能:客户端上传一张图片交给服务端后再次上传一句话告诉服务端已经上传完毕;nnnnnn服务端代码:nnnpackage com.fpy.socket;nnimport java.io.BufferedInputStream;nimport java.io.BufferedOutputStream;nimport java.io.DataInputStream;nimport java.io.F...
android Sockte、ServerSocket阻塞,不同步问题
从昨天搞到了现在,一直有问题,开始以为是线程通信问题,测试后发现不是,走了好多弯路。用两个真机模拟的,有时候没有LogCat,也不知道原因。rn有一次发现提示read(),readline(),查了一下readLine()函数,原来是没有数据时,readLine()一直阻塞,直到接收数据。 但是在另一端也是处于阻塞状态。rn 使用这个函数socket.shutdownOutput();   半关闭
Android的App第一次启动时白屏很长时间问题!
前两天我在红米手机调试程序时遇到很大的,就是在小米手机上调试后第一次启动后会等待很长世间白屏,我在网上百度了很多答案都不能解决,后来才发现是AndroidStudio2.1.1版本的问题,只要你将手机正式release签名后,再安装到手机上就不会出现这样的问题,小米手机在调试程序时有很多坑,比如安装不上应用(得手动授权),还有比如调试摇一摇功能不能响应等等,建议大家在其他品牌手机上调试一下看看是不是
android studio2.2创建第一个工程速度太慢
主要原因就是首次创建时, AS 需要在线下载gradle去构建工程,我们只需要将AS对应的gradle版本放在所需位置就可以了。rn解决办法是:rn1、我们手动下载AS所对应的版本的gradle,链接如下:rnhttp://services.gradle.org/distributionsrn2、将下载好的gradle放置的位置,参考我的路径:rnC:\Users\lh\.gradle\wrapp
mysql第一次查询速度很慢
问题描述: nmysql第一次访问速度慢
Android:WebView提升首次加载速度
    例如:在商城类app的商品详情页由H5开发 ,在原生加载H5时,由于渲染,js加载过多,造成一个页面显示需要2~3s,这是不能忍受的.要想缩短这个时间,考虑到app启动时,初始化WebView组件以及提前加载H5那边不能懒加载的相关js:nn1.全局初始化:nn2.预加载的js清单(native.html),当然可以单独开服务接口获取这个清单,也可以放到本地:nnnndemo地址:http...
QTcpSocket 发送数据心得
遇到不会用的函数前,最好还是看看手册QAQ,今天居然吃了这个大亏!!! n先交代一下背景: n 在做TCP客户端的发送数据功能,要和服务器程序进行TCP/IP通信,且根据通信协议要发送数组或者结构体,并且数组的每一个位都是有效数据位。因此不能像大多数人一样加blockSize篡改协议内容。。网上大多数的例子都是 //用于暂存要发送的数据 n QByteArray block;
Tcp在Android7.0中无法使用的问题
最近在调试H264直播的过程中,测试同事反映在Android 7.0 的设备上无法直播,所有的TCP指令在服务端都收不到。rnrnrn经过排查,是在写TCP发送数据的时候没有注意,将发送方法写在了主线程,而android7.0之前系统没有对主线程上的一个TCP Socket的写入操作严格检查。Android 7.0修复了这个系统错误。rnrnrn只需要将发送方法放到线程中即可。特此记录。不再犯低级
node.js socket.broadcast发不去的一个原因
今天在做聊天系统时,遇到一个可笑的问题。socket.broadcast.emit(),怎么测试,第一次连接都不起作用,收不到信息,当第二次连接时,就能收到。只要服务器一段,就要两次连接,才会接到信息。郁闷死了。研究了几分钟,终于反应过来了。哈哈,broadcast本身就是广播,针对的对象至少要2个,如果一个的话,直接用socket.emit()就可以了,真实背自己的傻打败了。rn希望其它的小伙伴
android socket接受数据很慢
[code=Java]rndout = new DataOutputStream(socketclient.getOutputStream());rn dout.write(buffer, offset, length);rn dout.flush();rndin = new DataInputStream(socketclient.getInputStream());rnwhile (din.read(dReceive) != -1) rn rn[/code] rn发送完成之后直接去接受,当运行到din.read(dReceive)这时 就卡住了,大概五分钟之后才会有反应rn求指教
安卓学习笔记(19)-Socket编程&发送十六进制的数据
final Thread socketthread = new Thread(new Runnable() {n @Overriden public void run() {n Socket socket
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java学习socket java 学习指南 邵发