刷新后,Android客户端套接字无法写入

时间:2015-12-26 14:22:03

标签: java android sockets

我无法在flush()之后发送数据而没有刷新它不起作用...

package exm.co.me;

import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;

public class socket extends Activity {
    Socket socket;
    BufferedReader in=null;

    BufferedWriter out;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_socket);
        new backTask().execute();
    }

    public void submit(View v){
        EditText m=(EditText)findViewById(R.id.edit_msg);
        String s=m.getText().toString();
        send(s);
    }

    public void send(String m){

        try{
            out=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
            out.write(m);
            out.write("\n done.....");
            out.flush();
            Log.d("TcpClient","sent: "+m);
        }catch(IOException e){
            e.printStackTrace();
        }


    }
    public void setSocket() throws IOException{
        socket=new Socket("192.168.56.1",8080);
        socket.setTcpNoDelay(true);
        in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
        send("connecting......");
        send("connecting 2......");
        new Thread(){
            @Override public void run(){
            int i;

            while(true){
                try{

                    String inMsg=in.readLine();
                    Log.i("TcpClient","received: "+inMsg);
                }catch(IOException e){
                    e.printStackTrace();
                }

             }
            }
        }.start();
        send("connected....");

    }

    public class backTask extends AsyncTask{
        @Override
        protected Object doInBackground(Object[] params){
            try{
                setSocket();
            }catch(IOException e){
                e.printStackTrace();
            }
            return null;
        }
    }
}
冲洗后,

out.wirte();无法正常工作?

我在服务器上收到:

connecting....
done...

但不打算:

connectiong 2.... connected...

我在服务器端使用php ...

    <?php
$host = "192.168.56.1";
$port = 8080;
$message = "Hello Client";
set_time_limit(0);

function messege_recived($msg){
if($msg=="exit"){
global $socket,$com;
echo '
server closed';
}
}
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n");
// bind socket to port
$result = socket_bind($socket, $host, $port) or die("Could not bind to socket\n");
$result = socket_listen($socket) or die("Could not set up socket listener\n");
echo 'listining ip '.$host." at port ".$port;
for($i=0;$i<5;$i++){
$com = socket_accept($socket) or die("Could not accept incoming connection\n");
$input = socket_read($com, 1024) or die("Could not read input\n");
$input = trim($input);
//message_recived($input);
echo '
Client says: '.$input;

//socket_write($com, $message , strlen ($message)) or die("Could not write output\n");
}
echo '
server closed';
socket_close($com);
socket_close($socket);
?>

0 个答案:

没有答案