Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java套接字服务器客户端代码stuck_Java_Android_Sockets_Client Server - Fatal编程技术网

Java套接字服务器客户端代码stuck

Java套接字服务器客户端代码stuck,java,android,sockets,client-server,Java,Android,Sockets,Client Server,我已经实现了下面的代码。服务器从客户端接收图像,然后matlab检测到某个对象并将新图像保存到face.jpg。然后,我尝试将一些点发送回客户端。我的客户端代码的//// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// Thread.sleep(15000);

我已经实现了下面的代码。服务器从客户端接收图像,然后matlab检测到某个对象并将新图像保存到face.jpg。然后,我尝试将一些点发送回客户端。我的客户端代码的////

 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////

                Thread.sleep(15000);
                Log.d("myTag","Test message11");


                try {
                    points = inFromServer.readLine();
                }catch(Exception IO){

                    Log.d("myTag","Fails to read from server");
                }


                Log.d("myTag",points);



                sock.close();

                ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
所有的安卓客户端代码都在这里,有什么想法吗?请帮忙

public class MyActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my);
}

int TAKE_PHOTO_CODE = 0;
public static int count=0;
public static String message="SENT";


public void button2OnClick(final View k){
    //Connecting to server and send the picture
    new Thread(new Runnable(){
        public void run(){
            try {



                int i;
                FileInputStream fis = new FileInputStream (Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + "/picFolder/1.jpg");

                Socket sock = new Socket("192.168.1.91", 6789);

                DataOutputStream os = new DataOutputStream(sock.getOutputStream());
                BufferedReader inFromServer = new BufferedReader(new InputStreamReader(sock.getInputStream()));

                byte[] buffer = new byte[1024];
                int bytesRead;

                while ((i = fis.read()) > -1)
                    os.write(i);
                fis.close();
                os.close();

                //lhyh apotelesmatos apo server
                String points;

               points="";

                /////////////////////////////////////////////////////////////////////////////////////////////////////////////////

                Thread.sleep(15000);
                Log.d("myTag","Test message11");


                try {
                    points = inFromServer.readLine();
                }catch(Exception IO){

                    Log.d("myTag","Fails to read from server");
                }


                Log.d("myTag",points);



                sock.close();

                ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


                File filePath2 = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + "/picFolder/1.jpg");
                filePath2.delete();

                //File filePath2 = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + "/picFolder");
                //filePath2.delete();






                 }catch (Exception IO){

                 message="NOT SENT";

                File filePath = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + "/picFolder/1.jpg");
                filePath.delete();

                File filePath2 = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + "/picFolder");
                filePath2.delete();

                Log.d("myTag",message);

            }
        }

    }).start();
    Button button=(Button) k;
    ((Button) k).setText(message);



}


public void buttonOnClick(View v){



    //here,we are making a folder named picFolder to store pics taken by the camera using this application
    final String dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + "/picFolder/";
    File newdir = new File(dir);
    newdir.mkdirs();

    Button capture = (Button) findViewById(R.id.button);
    capture.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {


            // here,counter will be incremented each time,and the picture taken by camera will be stored as 1.jpg,2.jpg and likewise.
            count++;
            String file = dir+"1.jpg";
            File newfile = new File(file);
            try {
                newfile.createNewFile();
            } catch (IOException e) {}

            Uri outputFileUri = Uri.fromFile(newfile);

            Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);

            startActivityForResult(cameraIntent, TAKE_PHOTO_CODE);





        }
    });
}

@TargetApi(11)
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == TAKE_PHOTO_CODE && resultCode == RESULT_OK) {
        Log.d("CameraDemo", "Pic saved");


        // Afou travhksei thn kainouria eikona provaletai sto imageview
        Bitmap bmp = BitmapFactory.decodeFile(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + "/picFolder/1.jpg");
        ImageView image = (ImageView) findViewById(R.id.imageView2);
        image.setImageBitmap(bmp);
        //mage.setRotation(270);

    }
}



@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_my, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}
}

我也在发送服务器代码 公共类图像接收器{

public static void main(String[] args) {

    try{

         ServerSocket socket = new ServerSocket(6789);

         System.out.println("Server On-----Waiting for Image");
         while(true)
         {

             /////////////////////////////////////////////////////////////////////////////////////////////////////////////
             //                                 Receive Image From CLient                                               //
             /////////////////////////////////////////////////////////////////////////////////////////////////////////////
             Socket clientSocket = socket.accept();

             File filePath = new File("C:\\ImagesReceived\\image.jpg");
             filePath.delete();

             DataInputStream dis = new DataInputStream(clientSocket.getInputStream());
             FileOutputStream fout = new FileOutputStream("C:\\ImagesReceived\\image.jpg");
                try{


                 int i;
                 while ( (i = dis.read()) > -1) {

                     fout.write(i);
                 }
                 System.out.println("Image received");
                }catch(Exception FromClient ){
                    System.out.println("Image wasn't received");

                }
                fout.flush();
                fout.close();

              //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
              //                    Open Matlab Connection in order to Make the Face Detection                              ////
             ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

               try{

                     MatlabProxyFactoryOptions options =
                                new MatlabProxyFactoryOptions.Builder()
                                    .setUsePreviouslyControlledSession(true)
                                    .build();
                            MatlabProxyFactory factory = new MatlabProxyFactory(options);
                            MatlabProxy proxy = factory.getProxy();


                            proxy.eval("addpath('C:\\Users\\Theojim')");
                            proxy.eval("run('firsttry.m')");
                            proxy.eval("rmpath('C:\\Users\\Theojim')");
                            System.out.println("Matlab Done");
                            // close connection
                            proxy.disconnect();




                 }
                 catch(Exception Matlab){
                     System.out.println("Matlab Error");
                 }



                //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
               //                   Epistrofh Shmeiwn Proswpou apo text file                                                    ////
               ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

               try{
                String sCurrentLine;

                BufferedReader br = null;
                br = new BufferedReader(new FileReader("C:\\ImagesReceived\\facepoints.txt"));
                String points="";
                while ((sCurrentLine = br.readLine()) != null) {

                    points+=sCurrentLine;

                }
                System.out.println(points);



                DataOutputStream outToClient = new DataOutputStream(clientSocket.getOutputStream());
                outToClient.writeBytes(points);
                System.out.println("points sent to android");
               }catch(Exception Points){
                   System.out.println("Points Failed to be sent to client");
               }


            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            //                          Epistrofh Eikonas Face Detected                                                    ////
            ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            //try{
              // int j;

              // FileInputStream file = new FileInputStream("C:\\ImagesReceived\\face.jpg");
               //DataOutputStream stream = new DataOutputStream(clientSocket.getOutputStream());

              // while ((j = file.read()) > -1) {
                //   System.out.println("While starts"+j);
                  // stream.write(j);
                   //stream.flush();
                   //System.out.println("While endss");
               //}
               //System.out.println("While exits");
               //file.close();
               //stream.close();
               dis.close();



            //}
            //catch(Exception ImageFace){
                //System.out.println("Face.jpeg Failed to be sent to client");

            //}












                clientSocket.close();

         }

    }catch(Exception IO){
        System.out.println("ERROR");
    }

}
}

最后,我将发送logat文件的最后一部分,以查看到底发生了什么。请帮忙

    05-26 22:05:59.715  16000-16491/com.example.theojim.myapplication D/myTag﹕ Test message11

05-26 22:05:59.716 16000-16491/com.example.theojim.myapplication D/myTag﹕ 无法从服务器读取数据

服务器一直读取到流结束。客户端需要关闭套接字才能传送流的结束。

服务器从客户端传送图像。
??您的意思是服务器从客户端接收图像吗?什么样的例外?检查imageFace.getMessage()<代码>文件输入流文件。不可读的代码。文件在
文件文件
中使用。更好的
FileInputStream-fis
。您正在逐个读取字节,这不是很有效。声明一个字节[]buffert并读入缓冲区,然后写入缓冲区;在抓块里。张贴日志!!我也发送了我的客户代码。我已经把插座合上了。