我正在开发一个 Android 应用程序。Android 应用程序(客户端)将与 pc(服务器)连接并共享数据。现在我可以成功建立连接但我无法发送数据。这是我的 Java 文件,其中包含建立连接和发送数据的所有逻辑。ServerConnection.javapublic class ServerConnection { private static int SERVER_PORT = 1100; private static String SERVER_IP = "192.168.43.7"; private boolean isConnected=false,connectionDone=false; private boolean mouseMoved=false; Context context; private Socket socket; private PrintWriter out; public void startConnection(String port , String ip){ SERVER_IP = ip.toString(); ConnectPhoneTask connectPhoneTask = new ConnectPhoneTask(); connectPhoneTask.execute(SERVER_IP); } public void sendDataToServer(String text){ try { if(isConnected) { out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true); //create output stream to send data to server } }catch (IOException e){ Log.e("remotedroid", "Error while creating OutWriter", e); Toast.makeText(context, "Error: while creating OutWriter "+e, Toast.LENGTH_LONG).show(); } if(out!=null){ out.println(text); } else{ Log.e("check" , "Something is wrong here"); } } public class ConnectPhoneTask extends AsyncTask<String,Void,Boolean> { @Override protected Boolean doInBackground(String... params) { boolean result = true; try { InetAddress serverAddr = InetAddress.getByName(params[0]); socket = new Socket(serverAddr, SERVER_PORT);//Open socket on server IP and port } catch (IOException e) { Log.e("remotedroid", "Error while connecting", e); result = false; } return result; }这个片段将发起连接并发送数据(通过调用sendDataToServer(String text)方法)。
1 回答
蝴蝶刀刀
TA贡献1801条经验 获得超8个赞
将这些字段添加到AsyncTask
; 甚至可能是static
:
private boolean isConnecting = false; private boolean isConnected = false;
并将这些设置为true
& false
,每当套接字状态发生变化时
那么不再重要了,按钮被点击的频率。
来自的代码sendDataToServer()
应该可能运行onPreExecute()
。
周围的额外班级AsyncTask
也是一团糟;
更好地直接构建它 - 使用 IP、端口和消息。
你有一些OutputStreamWriter
但从未写入流;
除此之外几乎没有任何onPostExecute
代码。
添加回答
举报
0/150
提交
取消