服务器无法从客户端java接收文本

时间:2016-09-10 11:01:30

标签: java android sockets

我正在创建一个应用程序,客户端可以在按钮点击时向服务器发送一些文本。我想在控制台服务器端打印该文本,但每当按下客户端按钮时都没有任何反应。

有时我在控制台android.support.v7.widget.AppCompatEditText@b2253390上获得此行。 我不明白为什么会发生这种情况?

服务器代码:

public static ServerSocket server = null;
public static Socket client = null;

public static void main(String []arg)throws IOException{
    try {
        server = new ServerSocket(8002); 
        System.out.println("Server Started..............."); 
        while(true){
        client = server.accept();
        DataInputStream in = new DataInputStream(client.getInputStream());
        String msg = in.readLine(); 
        System.out.println("and: "+msg); 
        }
    }catch(IOException r){
        System.out.println("error :"+r.getMessage()); 
    }
}

客户代码:

public void send(){
    send.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Socket cs = null;
                    try {
                        cs = new Socket("192.168.1.100", 8002);
                        DataOutputStream out = new DataOutputStream(cs.getOutputStream());
                        out.writeBytes(text.toString());
                    } catch (IOException e) {
                        Toast.makeText(KeyboardActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
                    }
                }
            }
    );
}

2 个答案:

答案 0 :(得分:2)

这是因为EditTextout.writeBytes(text.getText().toString());

我认为你的意思是,

out.writeBytes(text.toString());

而不是,

template<typename... Types>
auto for_each(type_list<Types...>) {
    return [](auto&& f) {
        using swallow = int[];
        (void) swallow { 0, (void(f(tag<Types>{})), 0)... };
    };
}

答案 1 :(得分:-2)

像往常一样,你正在读行,但你不是在写行。在正在发送的消息中添加行终止符。