public class SocketInteractServer {
private static final String TAG = "SocketInteractServer";
private int PORT = 7070;
private String IP = "109.105.3.230";
private Socket socket = null;
private DataInputStream in = null;
private DataOutputStream out = null;
public boolean isConnected() {//连接是否保持
return socket.isConnected();
}
public SocketInteractServer() {//初始化服务器IP和监听端口号
IP=Controller.getServerIP();
PORT=Controller.getServerPort();
connect();
}
public void connect() { //建立于服务器端的SOCKET连接并获得输入输出流
try {
socket = new Socket(IP, PORT);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
in = new DataInputStream(socket.getInputStream());//获得SOCKET输入流
} catch (IOException e) {
e.printStackTrace();
}
try {
out = new DataOutputStream(socket.getOutputStream());获得SOCKET输出流
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 从SOCKET中读取数据
* @return
*/
public String readStr() {
if (false == isReadable())
connect();// 重新连接
String messageString = null;
byte[] reply = new byte[1024];
int len = -1;
try {
len = in.read(reply);//读入的字节数
} catch (IOException e) {
e.printStackTrace();
}
if (len <= 0)
return null;
try {
messageString = new String(reply, "utf-8").trim();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return messageString;
}
/**
* 向SOCKET中写入数据
* @return
*/
public boolean writeStr(String message) {
if(socket.isConnected()==false)
return false;
byte[] request=null;
try {
request = message.getBytes("utf-8");
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
out.write(request);
out.flush();
} catch (IOException e) {
e.printStackTrace();
return false;
}
return true;
}
public boolean isReadable() {
return isConnected() && in != null;
}
public boolean isWriteable() {
return isConnected() && out != null;
}
public void close() {
if (in != null)
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
if (out != null)
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
if (socket != null)
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}