有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何让TCP服务器将消息发送回客户端?

在客户端发送消息后,我完全不知道如何让我的服务器应用程序将消息发送回客户端。我的目标是客户端向服务器发送一条消息说“你好”,服务器收到消息后再向客户端发送“你好”

我的问题 如何设置服务器发送消息和客户端接收消息的部分

我的服务器

public class MainActivity extends Activity {

private ServerSocket serverSocket;
    Handler updateConversationHandler;
    Thread serverThread = null;
    public String serverIP = "127.0.0.1";
    private InetAddress serverAddr;
    public static final int SERVERPORT = 4444;


@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);  
    updateConversationHandler = new Handler();
    this.serverThread = new Thread(new ServerThread());
    this.serverThread.start();

}

class ServerThread implements Runnable {

    public void run() {
        Socket socket = null;
        try {
            serverSocket = new ServerSocket(SERVERPORT);
        } catch (IOException e) {
            e.printStackTrace();
        }
        while (!Thread.currentThread().isInterrupted()) {
            try {
                socket = serverSocket.accept();
                CommunicationThread commThread = new CommunicationThread(socket);
                new Thread(commThread).start();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

class CommunicationThread implements Runnable {
    private Socket clientSocket;
    private BufferedReader input;
    public CommunicationThread(Socket clientSocket) {
        this.clientSocket = clientSocket;
        try {
            this.input = new BufferedReader(new InputStreamReader(this.clientSocket.getInputStream()));

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void run() {
        while (!Thread.currentThread().isInterrupted()) {
            try {
                String read = input.readLine();
                updateConversationHandler.post(new updateUIThread(read));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

}

class updateUIThread implements Runnable {
    private String msg;
    public updateUIThread(String str) {
        this.msg = str;
    }


    @Override
    public void run() {

        recieved.setText("");
        if (msg != null){
            recieved.setText(recieved.getText().toString()+"message recieved: "+ msg + “\n”);
        /* SEND MESSAGE */  

        }
    }
}
}

我的客户

public class MainActivity extends Activity {
private Socket socket;

private static final int SERVERPORT = 4444;
public String serverIP= "127.0.0.1";
private InetAddress serverAddr;
private Timer myTimer;


@Override 
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setServerIP();
    setContentView(R.layout.main);
    new Thread(new ClientThread()).start();
}

public void sendVerifiedMessage(byte message) throws IOException  {
  PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
  out.println(message);
/* receive message from client */
    }

    public void run() {
            sendVerifiedMessage(“hello”); 
      }
     }


class ClientThread implements Runnable {

    @Override
    public void run() {
        try {
            InetAddress serverAddr = InetAddress.getByName(serverIP);
            socket = new Socket(serverAddr, SERVERPORT);
            connected = true;
        } catch (UnknownHostException e1) {
            e1.printStackTrace();
             connected = false;
        } catch (IOException e1) {
              connected = false;
            e1.printStackTrace();
        }

    }
}
}

共 (0) 个答案