【发布时间】:2017-12-20 05:17:23
【问题描述】:
大家好,我有一个任务,我想向服务器发送消息,然后得到回复。我不断收到failed 1recvfrom failed: EBADF (Bad file descriptor) 错误,而且我是这个套接字的新手。希望有人可以帮助我。这是我的异步任务:
private class SendDataAsyncTask extends AsyncTask<Void,Void,Void>
{
private String reply = "";
@Override
protected Void doInBackground(Void... params)
{
try {
Socket socket = new Socket("ip",portNumber);
PrintWriter printWriter = new PrintWriter(socket.getOutputStream());
//printWriter.write("hello there");
printWriter.println("hello there");
bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
printWriter.flush();
reply = bufferedReader.readLine();
if(reply != null && !reply.equals(""))
{
Log.d(SOCKET_TESTING_TAG,"my message is " + reply);
}
else
{
Log.d(SOCKET_TESTING_TAG,"no message yet");
}
Log.d(SOCKET_TESTING_TAG,"break 3");
printWriter.close();
}
catch (IOException e)
{
Log.d(SOCKET_TESTING_TAG,"failed " + e.getMessage());
e.printStackTrace();
}
return null;
}
@Override
public void onPostExecute(Void var)
{
tv_response.setText(reply);
}
}
- 注意:当我在
printWriter.flush()之前放置 if 语句来检查 null readline 时,我仍然收到错误。
【问题讨论】:
标签: java android sockets tcp server