2012-03-03 1 views
1

안드로이드 클라이언트가 문자열을 서버로 보낸다. 서버는 장치와 올바른 포트에서 연결을 확인합니다. 그러나 문자열은 서버 콘솔에 인쇄됩니다.내 클라이언트가 서버에 연결 하겠지만 그게 다야.

참고로, 나는 똑같은 클라이언트를 만들었습니다. 안드로이드 앱 안에서 실행하지 않고 잘 동작합니다. 그래서 나는 안드로이드 쪽에서 뭔가를 놓치고 있다고 믿습니다. 누구든지이 문제를 해결할 수있는 제안을 제시 할 수 있습니까? 많은 감사합니다.

클라이언트 코드 :

public class ObjectTestActivity extends Activity { 

Button submit; 
TextView tv; 
private String name = "Hello Android"; 
private DataOutputStream dos; 
private DataInputStream dis; 
private final int PORT = 3000; 

Button send; 
InetAddress host; 


@Override 
public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    send = (Button) findViewById(R.id.send); 
    tv = (TextView) findViewById(R.id.tv); 


    try{ 

     host = InetAddress.getLocalHost(); 
     Socket socket = new Socket("xx.xx.xxx.xxx", PORT); 

     dos = new DataOutputStream(socket.getOutputStream()); 
     dis = new DataInputStream(socket.getInputStream()); 

    }catch(UnknownHostException e){} 
    catch(IOException e){} 
} 


public void onClick(View view){ 

    try{ 
     dos.writeUTF(name); 
     dos.flush(); 
     dis.close(); 
     dos.close(); 
    }catch(IOException e){} 
} 

답변

1

의 onclick에 무엇을 첨부? 다음으로 변경해보십시오 :

public class MyActivity extends Activity { 

    Button submit; 
    TextView tv; 
    private String name = "Hello Android"; 
    private DataOutputStream dos; 
    private DataInputStream dis; 
    private final int PORT = 3000; 

    Button send; 
    InetAddress host; 

    protected void onCreate(Bundle icicle) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     send = (Button) findViewById(R.id.send); 
     tv = (TextView) findViewById(R.id.tv); 


     try{ 

      host = InetAddress.getLocalHost(); 
      Socket socket = new Socket("xx.xx.xxx.xxx", PORT); 

      dos = new DataOutputStream(socket.getOutputStream()); 
      dis = new DataInputStream(socket.getInputStream()); 

     }catch(UnknownHostException e){} 
     catch(IOException e){} 


     send.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       try{ 
       dos.writeUTF(name); 
       dos.flush(); 
       dis.close(); 
       dos.close(); 
       }catch(IOException e){} 
      } 
     }); 
    } 
} 

버튼 onClick 이벤트.

간단히 말해서 onCreate (send.onCreate (...)) 내부에서 버튼 onClick 메서드를 정의하십시오.

이 예제는 here

+0

잭에서 제공됩니다. 감사합니다. 항상 onClicks를 별도의 메서드로 선언했습니다. 나는 이것이 그와 같은 차이를 만들 것이라고 이상하게 생각하지만 해결책은 2 주 이상 내 문제를 해결했습니다. 고맙습니다. – Jnanathan