解决bufferedReader.readline阻塞的问题
根本性的解决方法可能是不用bufferedreader,但是我只要做出来结果就行,所以先用一个治标不治本的方法凑活。打算先增加一个echo功能,让服务器返回一条消息,结束当前的readline,然后结束掉readline所在的死循环
/*
* 循环接收服务器的消息,并进行处理
*/
public void loop_to_recv(){
String TAG = "loop_to_recv";
MySocket.loopToRecv = true;
while(MySocket.loopToRecv){
public void closeSocket() {
try {
Log.d(TAG, "closeSocket: 开始");
loopToRecv = false;
JSONObject obj = new JSONObject();
obj.put("function","echo");
writeOutputStream(obj.toString());
至少能够正常退出了
需要完成的功能
退出匹配队列
在匹配队列中等待到另一名用户时,发送给另一名用户(需要找到和它连接的socket)
尝试用字典保存socket,然后通过公共的字典调用 ,但是不行。估计需要用到多线程之间的通信,让其他线程(和目标设备建立了TCP连接的线程)发送消息。问题是怎么实现线程之间的通信
11.29编辑:
修正:参考了网上的一个使用TCP建立聊天室的例子 ,发现用字典保存socket,然后在其他线程调用socket也是可行的,之前没有成功只是代码中的一个小bug导致的。这样的话就好办了