2013-01-25 3 views
0

서버안드로이드 클라이언트/자바 서버 2 웨이

내 생각이 쪽이 괜찮습니다하지만 난 확실하게 그냥 넣어 것이라고 말했다.

import java.io.*; 
import java.net.*; 
public class Server_wifi { 
    public static void main(String[] args) throws Exception { 
     ServerSocket sersock = new ServerSocket(3000); 
     System.out.println("Server ready for chatting"); 
     Socket sock = sersock.accept();       
     // reading from keyboard (keyRead object) 
     BufferedReader keyRead = new BufferedReader(new InputStreamReader(System.in)); 
     // sending to client (pwrite object) 
     OutputStream ostream = sock.getOutputStream(); 
     PrintWriter pwrite = new PrintWriter(ostream, true); 

     // receiving from server (receiveRead object) 
     InputStream istream = sock.getInputStream(); 
     BufferedReader receiveRead = new BufferedReader(new InputStreamReader(istream)); 

     String receiveMessage, sendMessage;    
     while(true) { 
      if((receiveMessage = receiveRead.readLine()) != null) { 
       System.out.println(receiveMessage);   
      }   
      sendMessage = keyRead.readLine(); 
      pwrite.println(sendMessage);    
      System.out.flush();        
     }    
    }      
} 

클라이언트가 나는 문제가 클라이언트 측에 있지만 정말 어디에 알아낼 수없는 것 같아요.

package com.example.testprogram; 

import java.io.BufferedReader; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.OutputStream; 
import java.io.PrintWriter; 
import java.net.Socket; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 

public class MainActivity extends Activity { 

    private Socket server; 
    private PrintWriter printwriter; 
    private EditText textField; 
    private EditText textField2; 
    private Button button; 
    private String messsage; 
    private int x =0; 

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

     textField = (EditText) findViewById(R.id.tf1); //reference to the text field 
     textField2 = (EditText) findViewById(R.id.tf2); //reference to the text field 
     button = (Button) findViewById(R.id.wifi); //reference to the send button 
     textField.setText("Started... "); 
     //Button press event listener 
     button.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       x++; 
       messsage = textField.getText().toString(); //get the text message on the text field 
       textField.setText("");  //Reset the text field to blank 
       System.out.println("Got here..."); 
       try { 

        Socket sock = new Socket("172.16.71.175", 3000); 
        // reading from keyboard (keyRead object) 
        BufferedReader keyRead = new BufferedReader(new InputStreamReader(System.in)); 
        // sending to client (pwrite object) 
        OutputStream ostream = sock.getOutputStream(); 
        PrintWriter pwrite = new PrintWriter(ostream, true); 

        // receiving from server (receiveRead object) 
        InputStream istream = sock.getInputStream(); 
        BufferedReader receiveRead = new BufferedReader(new InputStreamReader(istream)); 

        textField.setText("Start the chitchat, type and press Enter key"); 

        String receiveMessage, sendMessage; 
        while(true) { 
         sendMessage = textField.getText().toString();  // keyboard reading 
         pwrite.println(sendMessage);  // sending to server 
         System.out.flush();   // flush the data 

         if((receiveMessage = receiveRead.readLine()) != null) //receive from server 
         { 
          textField.setText(receiveMessage); // displaying at DOS prompt 
         }   
        }    
       }catch (UnknownHostException e) { 
      textField.setText("Unknown host"); 
       e.printStackTrace(); 
       } catch (IOException e) { 
      textField.setText("IO exception"+e.toString()); 
       e.printStackTrace(); 
       }         
      } 
     }); 

    } 
} 

내 앱이 충돌하는 것 같습니다. 완료하지 못했다고 계속 말합니다. 전화와 컴퓨터 사이에 양방향 시스템을 설치하려고합니다. 도움을 청하십시오. 나는 앱이 응답을 계속해서 올리도록 제안하는 것과 같은 포획을했다.

+2

{}님께 조금이라도 들러 주시겠습니까? – Fildor

+1

캐치가없는 try 블록이 있습니다. 그게다고 생각해. – Fildor

+0

Fildor에게 감사 드리며 indentaion에 대해 사과드립니다.하지만 이제는 응답이 없습니다. –

답변

0

클라이언트와 서버 측 모두에서 을 호출 한 후 대신 pwrite.flush()을 호출해야합니다 (pwrite.println(sendMessage)). 잘못된 출력 스트림을 플러시하고 있습니다.

관련 문제