将数据从服务器发送到客户端?

问题描述 投票:0回答:1

我在这段代码中遇到问题,客户端可以向服务器发送消息,但是它没有收到服务器发送的消息我已经调试了服务器代码,它做了所有事情,但应该是客户端,它会执行所有代码直到消息= br.readLine(),它坚持在那里

服务器代码

    package server; 
    import java.io.BufferedReader;
    import java.io.EOFException;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    public class server {
    static Socket s;
    static ServerSocket ss;
    static InputStreamReader isr;
    static BufferedReader br;
    static String message;
    static PrintWriter pw;
    public server(){
try {
    ss=new ServerSocket(8080);
    while(true){
        s=ss.accept();
        isr=new InputStreamReader(s.getInputStream());
        br=new BufferedReader(isr);
        message=br.readLine();
        System.out.println(message);
        pw=new PrintWriter(s.getOutputStream(),true);
        pw.write("returned back from server to client");
        System.out.println("message sent");
        pw.flush();
        pw.close();
        isr.close();
        s.close();
    }
} catch (EOFException eofException) {
    // TODO Auto-generated catch block
    eofException.printStackTrace();
}catch(IOException e){
    e.printStackTrace();
}
 }
    public static void main(String[]args){
server s=new server();
  }
  }

客户代码

    package com.example.myapplication;
    import android.os.AsyncTask;
    import java.io.BufferedReader;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.Socket;

    public class ClientSender extends AsyncTask<String,Void,Void> {
Socket s;
DataOutputStream dos;
InputStreamReader isr;
BufferedReader br;
PrintWriter pw;
@Override
protected Void doInBackground(String... voids) {
    String message = voids[0];
    try {
        System.out.println("1");

        s = new Socket("0.0.0.0", 8080);
        pw = new PrintWriter(s.getOutputStream());
        pw.write(message);
        pw.flush();
        pw.close();
        s.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    try {
        System.out.println("2");
        s = new Socket("0.0.0.0", 8080);
        System.out.println("connected to the server");
        isr = new InputStreamReader(s.getInputStream());
        System.out.println("3");
        br = new BufferedReader(isr);
        System.out.println("4");
        message = br.readLine();
        System.out.println(message);
        isr.close();
        s.close();
        System.out.println("5");
    } catch (IOException e) {
        e.printStackTrace();
    }

    return null;
}
}
java android sockets tcp serversocket
1个回答
-1
投票

我建议你使用Socket.IO而不是编写自己的套接字客户端。它是一个经过充分测试和充分记录的lib。这将使您的生活变得更加轻松。

© www.soinside.com 2019 - 2024. All rights reserved.