作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
这个问题不太可能帮助任何 future 的访客;它仅与一个小地理区域、一个特定时刻或一个非常狭窄的情况相关,而这些情况通常不适用于互联网的全局受众。如需帮助使这个问题更广泛地适用,visit the help center .
9年前关闭。
在写入套接字期间,我有一个非常奇怪的行为。
在我的移动客户端中,我使用了一个初始化如下的套接字:
private void initSocket()
{
socket = new Socket();
socket.connect(new InetSocketAddress(host, port));
os = new DataOutputStream(socket.getOutputStream());
is = new DataInputStream(socket.getInputStream());
}
if(!isSocketInitialized())
{
initSocket();
}
byte[] msg = getMessage();
os.write(msg);
os.flush();
int bytesAvailable = is.available( );
if(bytesAvailable>0)
{
byte[] inputBuffer = new byte[bytesAvailable];
int numRead = is.read(inputBuffer, 0, bytesAvailable);
processServerReply(inputBuffer, numRead);
}
Written A
Written B
Written C
Written D
Written E
Received A
Received E
// close
is.close();
os.close();
socket.close();
// reinitialize
initSocket();
最佳答案
摆脱available()
测试。如果对方要回复,请阅读它。否则,有时您会阅读回复,有时则不会,并且您会失去同步。 available()
的正确用法很少。 ,而这不是其中之一。
关于java - OutputStream.write() 成功但数据未下发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13076162/
我是一名优秀的程序员,十分优秀!