마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

(소스있음) 소켓통신 질문입니다

0 추천
스파트폰간에 UDP 통신을 이용해 리모트 동영상 촬영을 구현할려고 하고있습니다.

일단 클라이언트쪽에서 버튼으로서 화면을 롱터치할때  원격으로 상대방 스마트폰에 동영상 촬영이 시작하게끔  문자로서 "start" 로 설정했습니다...  문제는 서버쪽에서 어떻게  클라이언트에서 받은 메세지를 판독하여 동영상 촬영 구현을 시킬가입니다만.... 영 잘모르겠습니다....  도움부탁드립니다..  

<클라이언트>

 public void onLongPress(MotionEvent motionevent)
    {
        Log.v("INFO", "onLongPress");
  

        if (myRecorder==null)
        {

            myVideoView_rec.setVisibility(View.VISIBLE);
            myVideoView_play.setVisibility(View.INVISIBLE);
   myRecorder = new MediaRecorder();
   isRecording = false;
   isPlay = false;

        }
        if (isRecording!=true)
  {
   
   if (initializeVideoSettings()==true)  // MediaRecorder의 설정
   {

    myRecorder.start();    // 녹화개시
    isRecording = true;    // 녹화중 플러그
    InetAddress serverAddr = InetAddress.getByName(Server.SERVERIP);
     DatagramSocket socket = new DatagramSocket();
     byte[] buf = ("start").getBytes();
     DatagramPacket packet = new DatagramPacket(buf, buf.length, serverAddr,  UDP_SOCKET_PORT);
    socket.send(packet);
        

   }
  }
  else
  {
   // 녹화중이라면녹화중지
   //--------------------------
   myRecorder.stop();   
   myRecorder.reset();    
   myRecorder.release();   
   isRecording = false;   
   myRecorder = null;

   InetAddress serverAddr = InetAddress.getByName(Server.SERVERIP);
    DatagramSocket socket = new DatagramSocket();
    byte[] buf = ("stop").getBytes();
    DatagramPacket packet = new DatagramPacket(buf, buf.length, serverAddr,  UDP_SOCKET_PORT);
   socket.send(packet);
  }
    }

 

<서버>

public void setUDP(){
  try{
   socket = new DatagramSocket(port);
   Log.d("UDP","S:Connecting...");
   
   byte[] buf = new byte [512];
   while(true){
    receivePacket = new DatagramPacket(buf,buf.length);
    Log.d("UDP", "S: Receiving...");                   
    socket.receive(receivePacket);             
    Log.d("UDP", "S: Received : " + new String(receivePacket.getData()) + "");        
    Log.d("UDP", "S: Done.");             
    InetAddress clientAddr = receivePacket.getAddress();           
    port = receivePacket.getPort();                          
    String s = new String(receivePacket.getData());         
    Log.d("UDP", "Receive : " + s);            
    s = s.toUpperCase();            
    buf = s.getBytes();         
    Log.d("UDP", "UpperCase : " + s);                    
    receivePacket = new DatagramPacket(buf, buf.length, clientAddr, port);            
    Log.d("UDP", "Send " + new String(buf));             
    socket.send(receivePacket);           
    }      
   } catch (Exception ex) {         
    Log.e("UDP", "S: Error", ex);     
    }
    
   }

  
     @Override
     public void onLongPress(MotionEvent motionevent)
     {
         Log.v("INFO", "onLongPress");
   

         if (myRecorder==null)
         {

             myVideoView_rec.setVisibility(View.VISIBLE);
             myVideoView_play.setVisibility(View.INVISIBLE);
    myRecorder = new MediaRecorder();
    isRecording = false;
    isPlay = false;

         }
         if (isRecording!=true)
   {
    
    if (initializeVideoSettings()==true)  
    {

     myRecorder.start();    // 녹화개시
     isRecording = true;    //

    }
   }
   else
   {
    
    myRecorder.stop();    
    myRecorder.reset();    
    myRecorder.release();  
    isRecording = false;   
    myRecorder = null;
   }
     }
나는 전설이다 (140 포인트) 님이 2013년 4월 4일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...