在我的Android应用程序中,我想用服务器
做一些事情1.连接 2.获取数据 3.Disconnect
我在使用Socket连接和从服务器获取数据方面取得了成功。
连接服务器的代码: -
try {
socket = new Socket(dstAddress, dstPort);
BufferedReader br = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
//Read data in the input buffer
response = br.readLine().toString();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
response = "UnknownHostException: " + e.toString();
throw new CustomException(response);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
response = "IOException: " + e.toString();
throw new CustomException(response);
}
我检查了正确的答案: -
220 *************************************************************************
获取数据的代码: -
try {
if(socket.isConnected())
{
Log.v("TAG","Connected");
}
DataOutputStream os = null;
DataInputStream is = null;
os = new DataOutputStream(socket.getOutputStream());
is = new DataInputStream(socket.getInputStream());
os.writeBytes("EHLO\r\n");
os.flush();
String responseLine = "";
while (is.available() > 0) {
responseLine = is.readLine();
System.out.println("Server: " + responseLine);
status = true;
if (responseLine.contains("\r\n")) {
Log.v("TAG",""+ responseLine);
break;
}
}
在while循环中,每次检查响应都给出了正确的值: -
250-indition.cc [::ffff:117.195.116.165]
250-AUTH LOGIN PLAIN CRAM-MD5 CRAM-SHA1 CRAM-SHA256 CRAM-RIPEMD DIGEST-MD5
250-AUTH=LOGIN PLAIN CRAM-MD5 CRAM-SHA1 CRAM-SHA256 CRAM-RIPEMD DIGEST-MD5
250-PIPELINING
250-8BITMIME
250-SIZE 40960000
250-ETRN
250-XXXXXXXA
250 XXXB
但是在我断开服务器之后这样做了,然后它在获取数据时给出了响应。 断开连接的代码: -
try {
if(socket.isConnected())
{
Log.v("TAG","Connected");
}
DataOutputStream os = null;
DataInputStream is = null;
os = new DataOutputStream(socket.getOutputStream());
os.writeBytes("quit\r\n");
os.flush();
is = new DataInputStream(socket.getInputStream());
String responseLine = "";
while (is.available() > 0) {
responseLine = is.readLine();
System.out.println("Server: " + responseLine);
}
而不是获得与服务器断开连接的响应,如下所示: -
221 indition.cc closing connection
连接被外国主机关闭。
它提供了获取数据的响应。我没有关闭任何InputStream和OutputStream。
请为此提供解决方案。 提前谢谢。