2 u013033086 u013033086 于 2015.07.02 09:26 提问

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);

    }

4个回答

woyaochenggong774
woyaochenggong774   2015.07.02 10:01

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

max_min_
max_min_   Rxr 2015.07.02 11:56

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

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

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

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

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

Csdn user default icon
上传中...
上传图片
插入图片