Java 如何在Android设备和PC之间实现高效的wifi通信?

Java 如何在Android设备和PC之间实现高效的wifi通信?,java,android,sockets,tcp,c++-cli,Java,Android,Sockets,Tcp,C++ Cli,首先,我的问题不是设置wifi热点。我使用netsh很容易做到这一点。我的问题是关于在PC和设备之间执行套接字到套接字的通信 android设备充当服务器:我使用一个线程,其中一个ServerSocket等待连接(accept()),然后返回一个Socket。然后它启动第二个线程,我通过InputStreamReader和PrintWriter访问流。我读了这些字,读完后我把答案寄回去。只要我必须保持通信畅通,我就会保持插座处于打开状态 PC用C++/CLI(.NET)编程,充当客户端。(实际上

首先,我的问题不是设置wifi热点。我使用
netsh
很容易做到这一点。我的问题是关于在PC和设备之间执行套接字到套接字的通信

android设备充当服务器:我使用一个线程,其中一个
ServerSocket
等待连接(
accept()
),然后返回一个
Socket
。然后它启动第二个线程,我通过
InputStreamReader
PrintWriter
访问流。我读了这些字,读完后我把答案寄回去。只要我必须保持通信畅通,我就会保持
插座
处于打开状态

PC用C++/CLI(.NET)编程,充当客户端。(实际上,Android设备是PC热点的wifi客户端,但我的程序正好相反:计算机必须向设备发出请求;而不是相反。)因此我创建了一个
套接字(SocketType=Stream,ProtocolType=Tcp,可能我做得不对)。然后我连接它。实际连接正常:但可能需要几秒钟的时间。不管怎样,如果我必须做一两次,这都不是问题。然后我使用
send()
发送请求,并使用
Receive()
获取答案

现在,为了测试系统,我使用了PuTTY。我连接正确,数据发送和接收正确。问题是有一个巨大的延迟。让我们看一个例子:

o发送:连接

最多等待5秒钟

o接收:好的

我本以为这是瞬间发生的。我使用Eclipse调试器查看延迟是发生在通信的PC到设备部分还是发生在设备到PC部分。似乎在两个方向上都需要同样多的时间

  • 使用带有Tcp协议的流套接字(PC端)正确吗
  • 安卓系统中的套接字或更深层是否有一些设置,我可以对其进行微调以加快此类数据交换
  • 我当然可以给你更多的信息,但我不知道什么是相关的,什么是不相关的。请随意询问更多细节


    谢谢你能给我的帮助

    嗯。。5秒钟通过无线网络打开TCP连接(由于其极其复杂的空侧协议和硬件会产生相当大的延迟,因此确实会减慢三方握手),这似乎并不不合理。然而,对于数据交换来说,这似乎是相当长的一段时间。我想知道这种效果是不是像唠叨一样的效果?无线网络倾向于优化以下载网页和其他类似的大缓冲流,并且确实不喜欢只传输少量数据的乒乓协议。@MartinJames这就是为什么我要寻找缓冲区大小或自动刷新调整…@MartinJames 5秒是因为我使用的平板电脑出现问题。我试过其他设备,一切都很好。谢谢