app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java
@@ -31,6 +31,8 @@ import safeluck.drive.evaluation.DB.failitems.FailedProj; import safeluck.drive.evaluation.DB.failitems.FailedProj_select; import safeluck.drive.evaluation.R; import safeluck.drive.evaluation.im.IMSClientBootstrap; import safeluck.drive.evaluation.im.MessageProcessor; import safeluck.drive.evaluation.tcp.ConnectThread; /** @@ -61,7 +63,7 @@ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.layout_tcpclient, container, false); initView(view); workViewModel =ViewModelProviders.of(this).get(CriteriaIViewModel.class); // workViewModel =ViewModelProviders.of(this).get(CriteriaIViewModel.class); return view; @@ -83,22 +85,37 @@ public void onClick(View v) { switch (v.getId()){ case R.id.btn_connect: // String serverIp = ip.getText().toString().trim(); // String serverPort = port.getText().toStrirng().trim(); // connectThread = new ConnectThread(serverIp,Integer.parseInt(serverPort)); // connectThread.start(); Random random = new Random(); r = random.nextInt(30)+1; Log.i(TAG, "onClick: 随机数="+r); WorkRoomDataBase.dataBaseWriteExecutor.execute(new Runnable() { @Override public void run() { WorkRoomDataBase.getWorkRoomDataBase(getContext().getApplicationContext()).getFailProjDao().insert(new FailedProj(flag?1:2, r,flag?1001:1000)); flag = !flag; } }); /**======================以下用于测试数据库==================*/ // Random random = new Random(); // r = random.nextInt(30)+1; // Log.i(TAG, "onClick: 随机数="+r); // WorkRoomDataBase.dataBaseWriteExecutor.execute(new Runnable() { // @Override // public void run() { // // WorkRoomDataBase.getWorkRoomDataBase(getContext().getApplicationContext()).getFailProjDao().insert(new FailedProj(flag?1:2, r,flag?1001:1000)); // flag = !flag; // } // }); /**======================测试数据库结束==================*/ String userId = "100002"; String token = "token_" + userId; String hosts = "[{\"host\":\"192.168.10.234\", \"port\":8855}]"; IMSClientBootstrap.getInstance().init(userId,token,hosts,1); break; case R.id.btn_send: // if (connectThread != null){ @@ -106,6 +123,10 @@ //// sendEditText.getText().clear(); //// } MessageProcessor.getInstance().sendMessage(sendEditText.getText().toString().trim()); break; } } app/src/main/java/safeluck/drive/evaluation/im/IMSClientBootstrap.java
@@ -3,12 +3,14 @@ import android.util.Log; import com.anyun.im_lib.interf.IMSClientInteface; import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.reflect.TypeToken; import java.lang.reflect.Type; import java.util.Vector; @@ -78,18 +80,21 @@ } private Vector<String> convertHosts(String hosts) { Log.i(TAG, "convertHosts: "+hosts); if (hosts != null && hosts.length() > 0) { JsonArray hostArray = JsonParser.parseString(hosts).getAsJsonArray(); if (null != hostArray && hostArray.size() > 0) { Vector<String> serverUrlList = new Vector<String>(); JsonObject host; for (int i = 0; i < hostArray.size(); i++) { host = JsonParser.parseString(hostArray.get(i).toString()).getAsJsonObject(); serverUrlList.add(host.get("host") + " " + host.get("port")); } return serverUrlList; Vector<String> serverUrlList = new Vector<>(); JsonArray jsonArray =JsonParser.parseString(hosts).getAsJsonArray(); for (int i = 0; i < jsonArray.size(); i++) { JsonObject host = jsonArray.get(i).getAsJsonObject(); String hostName = host.get("host").getAsString(); int port = host.get("port").getAsInt(); Log.i(TAG, "convertHosts: hostname="+hostName+" port="+port); serverUrlList.add(hostName+" "+port); } return serverUrlList; } app/src/main/java/safeluck/drive/evaluation/im/IMSConnectStatusListener.java
@@ -1,5 +1,7 @@ package safeluck.drive.evaluation.im; import android.util.Log; import com.anyun.im_lib.listener.IMSConnectStatusCallback; /** @@ -9,18 +11,21 @@ * All Rights Saved! Chongqing AnYun Tech co. LTD */ public class IMSConnectStatusListener implements IMSConnectStatusCallback { private static final String TAG = IMSConnectStatusListener.class.getSimpleName(); @Override public void onConnecting() { Log.i(TAG, "onConnecting: "); } @Override public void onConnected() { Log.i(TAG, "onConnected: "); } @Override public void onConnectFailed() { Log.i(TAG, "onConnectFailed: "); } } app/src/main/java/safeluck/drive/evaluation/im/IMSEventListener.java
@@ -25,7 +25,7 @@ @Override public boolean isNetWorkAvailable() { return false; return true; } @Override im_lib/src/main/java/com/anyun/im_lib/netty/NettyTcpClient.java
@@ -478,7 +478,6 @@ try { currentPort = Integer.parseInt(address[1]); currentHost = address[0]; Log.i(TAG, String.format("解析地址[%s],port[%d]",currentHost,currentPort)); //连接服务器 toServer(); //channel不为空,则认为连接已经成功 im_lib/src/main/java/com/anyun/im_lib/netty/TCPChannelInitializerHandler.java
@@ -9,6 +9,7 @@ import io.netty.channel.ChannelPipeline; import io.netty.handler.codec.FixedLengthFrameDecoder; import io.netty.handler.codec.LengthFieldBasedFrameDecoder; import io.netty.handler.codec.LineBasedFrameDecoder; /** * MyApplication2 @@ -52,6 +53,7 @@ pipeline.addLast(new FixedLengthFrameDecoder(10)); // 测试用 固定长度消息 //握手认证消息相应处理handler // pipeline.addLast(LoginAuthRespHandler.class.getSimpleName(), new LoginAuthRespHandler(imsClient)); im_lib/src/main/java/com/anyun/im_lib/netty/TCPReadHandler.java
@@ -58,14 +58,12 @@ @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { super.channelRead(ctx, msg); // TODO: 2019/12/4 //服务端返回消息后 ByteBuf buf = (ByteBuf) msg; byte[] req = new byte[buf.readableBytes()]; buf.readBytes(req); String str = new String(req, "UTF-8"); System.out.println("服务端数据为 :" + str); Log.i(TAG, "channelRead: "+ str); imsClient.getMsgDispatcher().receivedMsg( str );