diehong3707 2017-03-19 13:35 采纳率: 0%
浏览 3686

java socket服务器接收不到客户端发来的消息

package socket;

public class MySeverSocket {

public static void main(String[] args) {
    new ServerListener().start();
}

}


package socket;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

import javax.swing.JOptionPane;

public class ServerListener extends Thread {
public void run (){
try {

ServerSocket serverSocket = new ServerSocket(55555);
while (true){
Socket socket = serverSocket.accept();
JOptionPane.showMessageDialog(null, "有客户端连接到了55555端口");
ChatSocket cs = new ChatSocket(socket);
cs.start();
ChatManager.getChatManager().add(cs);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}


package socket;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.Socket;

public class ChatSocket extends Thread {

Socket socket;
public ChatSocket(Socket s) {
    this.socket = s;
}

public void  out(String out) {
    try {
        socket.getOutputStream().write(out.getBytes("UTF-8"));
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

@Override
public void run() {
    try {
        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8"));
        String line = null;
        while ((line = br.readLine()) != null) {
            ChatManager.getChatManager().publich(this, line);
        }
        br.close();
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

}


package socket;

import java.util.Vector;

public class ChatManager {
private ChatManager() {}
private static final ChatManager cm = new ChatManager();
public static ChatManager getChatManager() {
return cm;
}

Vector<ChatSocket> vector = new Vector<ChatSocket>();

public void  add(ChatSocket cs) {
    vector.add(cs);
}

public void publich(ChatSocket cs,String out) {
    for(int i = 0;i<vector.size();i++){
        ChatSocket csChatSocket = vector.get(i);
        if (!cs.equals(csChatSocket)) {
            csChatSocket.out(out);
        }
    }
}

}

安卓客户端连接与发送消息方法

public void connect(){
final AsyncTask read = new AsyncTask() {
String iptext = ip.getText().toString();
@Override
protected Void doInBackground(Void... params) {
try {
socket = new Socket(iptext,55555);
writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
publishProgress("@success");
} catch (IOException e) {
Toast.makeText(MainActivity.this,"连接失败",Toast.LENGTH_SHORT).show();
e.printStackTrace();
}

            try {
                String line;
                while ((line = reader.readLine()) != null){
                    publishProgress(line);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onProgressUpdate(String... values) {
            if (values[0].equals("@success")){
                Toast.makeText(MainActivity.this,"连接成功",Toast.LENGTH_SHORT).show();
            }
            text.append("别人说"+values[0]+"\n");
            super.onProgressUpdate(values);
        }
    };
    read.execute();
}

public void send(){
    try {
       // text.append("我说:"+editText.getText().toString()+"\n");
        writer.write(editText.getText().toString()+"\n");
        writer.flush();
        editText.setText("");
    } catch (IOException e) {
        e.printStackTrace();
    }
}
  • 写回答

5条回答

  • 雕虫大计 2017-03-20 08:13
    关注

    有没有报错日志,可能网络都不通

    评论

报告相同问题?

悬赏问题

  • ¥15 运筹学排序问题中的在线排序
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧