Android 维护多个套接字连接聊天应用程序
我正在构建一个IRC客户端,它是一个基于IRC协议的聊天应用程序。在我的应用程序中,我需要创建一个套接字并连接到服务器(即:freenode.net)。在这个服务器中有多个频道,我有这些频道的列表视图。当我点击一个频道项目时,我想通过调用一个新的ConnectTask()并创建一个新的活动来建立与该频道的连接,然后开始聊天。但是,当我返回列表视图并再次单击该频道时,我希望恢复到以前在ConnectTask()上的聊天内容,同时,我还希望连接到其他频道,并在临时“离开”频道时保持状态。我将如何实现这一点?我应该为每个频道打开一个新的活动吗?还是碎片?我应该用线还是什么的?多谢各位 Connection.javaAndroid 维护多个套接字连接聊天应用程序,android,Android,我正在构建一个IRC客户端,它是一个基于IRC协议的聊天应用程序。在我的应用程序中,我需要创建一个套接字并连接到服务器(即:freenode.net)。在这个服务器中有多个频道,我有这些频道的列表视图。当我点击一个频道项目时,我想通过调用一个新的ConnectTask()并创建一个新的活动来建立与该频道的连接,然后开始聊天。但是,当我返回列表视图并再次单击该频道时,我希望恢复到以前在ConnectTask()上的聊天内容,同时,我还希望连接到其他频道,并在临时“离开”频道时保持状态。我将如何实现
public void start() throws IOException {
running = true;
Socket socket = new Socket(host, port);
try {
out = new PrintWriter(new BufferedWriter
(new OutputStreamWriter
(socket.getOutputStream())),
true);
in = new BufferedReader(new InputStreamReader
(socket.getInputStream()));
send("NICK " + nick);
send("USER " + username + " 0 * :" + realname);
send("JOIN " + channel);
while (running) {
String message = in.readLine();
if (message != null)
listener.rcv(message);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
out.flush();
out.close();
in.close();
socket.close();
}
}
单通道活动中的ConnectTask()。
private class ConnectTask extends AsyncTask<String, String, Connection> {
@Override
protected Connection doInBackground(String... params) {
connection = new Connection(params[0],
Integer.parseInt(params[1]),
params[2],
params[3]
,
new Connection.MessageCallback() {
@Override
public void rcv(String message) {
publishProgress(message);
}
});
try {
connection.start();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onProgressUpdate(String... values) {
parseSrv(values[0]);
}
}
然而,当我返回列表视图并再次单击频道时,我想恢复到以前的聊天内容代码>不清楚你认为什么是“聊天之前”。我的意思是我想在离开之前看到对话,而不必再连接到频道。基本上,我希望同时运行多个频道:(谢谢如果你不能要求服务器提供某个日期和时间的对话,那么你必须自己保存和检索它们。这只是一点文本,所以保存和检索很容易。我在下面,感谢你的帮助:)
new ConnectTask().execute("irc.freenode.net", "6667", nick, channel);