package top.tupobi.client;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
public class ClientSocketProcessor {
private OnSocketListener mOnSocketListener;
private Socket mSocket = null;
private DataOutputStream mDataOutputStream = null;
private DataInputStream mDataInputStream = null;
private boolean isConnected;
public void setOnSocketListener(OnSocketListener onSocketListener) {
mOnSocketListener = onSocketListener;
}
public void connect(String ip, int port) {
try {
// 连接服务器,连接不上直接进异常,不会继续执行下面语句,是同步的
mSocket = new Socket(ip, port);
mDataOutputStream = new DataOutputStream(mSocket.getOutputStream());
mDataInputStream = new DataInputStream(mSocket.getInputStream());
System.out.println("~~~~~~~~连接成功~~~~~~~~!");
isConnected = true;
ClientSocketReceiverThread clientSocketReceiverThread =
new ClientSocketReceiverThread(mDataInputStream);
clientSocketReceiverThread.setOnReceiveDataListener(new OnReceiveDataListener() {
@Override
public void onReceiveData(String data) {
mOnSocketListener.onReceiveData(data);
}
@Override
public void onDisconnectedNormally() {
System.out.println("服务端正常关闭连接");
isConnected = false;
}
@Override
public void onDisConnectedAbNormally() {
System.out.println("服务端异常关闭连接");
isConnected = false;
}
});
new Thread(clientSocketReceiverThread).start();
} catch (UnknownHostException e) {
e.printStackTrace();
mOnSocketListener.onUnknownHostError();
} catch (IOException e) {
e.printStackTrace();
mOnSocketListener.onConnectFail();
}
}
public void disConnect() {
if (mSocket != null && mDataInputStream != null && mDataOutputStream != null && isSocketConnected()) {
try {
mDataOutputStream.close();
mDataInputStream.close();
System.out.println();
mSocket.close();
isConnected = false;
} catch (IOException e) {
e.printStackTrace();
System.out.println("客户端断开连接失败:IOException");
}
}
}
public void sendData(String data) {
if (isSocketConnected()) {
try {
mDataOutputStream.writeUTF(data);
mDataOutputStream.flush();
} catch (IOException e) {
e.printStackTrace();
System.out.println("客户端发送数据失败:IOException");
}
} else {
System.out.println("socket未连接,发送不了消息");
}
}
public boolean isSocketConnected() {
return isConnected;
}
public void reConnect(String ip, int port) {
connect(ip, port);
}
}
interface OnSocketListener {
void onUnknownHostError();
void onConnectFail();
void onReceiveData(String data);
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
socket.rar (38个子文件)
socket
pom.xml 3KB
target
test-classes
top
tupobi
GsonTest.class 1KB
generated-test-sources
test-annotations
classes
top
tupobi
client
SocketClient.class 2KB
SocketClient$2.class 934B
OnSocketListener.class 243B
OnReceiveDataListener.class 268B
SocketClient$1.class 2KB
SocketClient$TFListener.class 2KB
ClientSocketReceiverThread.class 2KB
ClientSocketProcessor$1.class 1KB
ClientSocketProcessor.class 3KB
Constants.class 381B
server
OnSocketServiceListener.class 188B
SocketServer.class 2KB
ClientManager.class 885B
Main.class 2KB
Main$1.class 2KB
ClientMaintainThread.class 3KB
OnAClientListener.class 293B
pojo
DataResult.class 3KB
SimpleMessage.class 555B
generated-sources
annotations
socket.iml 81B
src
test
java
top
tupobi
GsonTest.java 875B
main
java
top
tupobi
client
ClientSocketProcessor.java 4KB
SocketClient.java 3KB
ClientSocketReceiverThread.java 1KB
Constants.java 146B
server
ClientMaintainThread.java 3KB
ClientManager.java 538B
SocketServer.java 2KB
Main.java 2KB
pojo
SimpleMessage.java 238B
DataResult.java 2KB
.idea
uiDesigner.xml 9KB
misc.xml 526B
encodings.xml 177B
compiler.xml 539B
workspace.xml 30KB
共 38 条
- 1
资源评论
徒破壁
- 粉丝: 16
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功