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

소켓통신 에러좀 도와주세요

0 추천
안녕하세요 초보 개발자입니다.

소켓 통신을 공부하려고 서버는 자바로 클라이언트는 안드로이드로 구현해서 간단한 채팅 소스를 보고있었는데요

 

서버에서 BufferedReader/Writer로 값을 보내고 받고 하도록 만들고

클라이언트에서 networkReader/Writer로 값을 보내고 받도록 만들었습니다.

 

서버에서 scanner를 통해 문자열을 입력하면

스트림을 통해 안드로이드에서 전달 받는것 까지는 확인 했습니다.

 

안드로이드에서 전달 받을때

string line;

line = networkReader.readLine();

이런식으로 받도록 만들었는데

networkReader.readLine() 에서 값을 정상적으로 받는데

그 값을 line 변수에 저장할때 에러가 생깁니다

<에러>

error(s)_during_the_evaluation

line cannot be resolved to a variable

 

원인이나 해결방법좀 알려주시면 감사하겠습니다ㅜㅜ
라이언인데왜 (550 포인트) 님이 2015년 7월 15일 질문

1개의 답변

0 추천
 
채택된 답변

String line;

이 문제 일수 있을 것 같아요.

위치문제에서 날수 있다고 하내요. 해당 에러는요.

https://teamtreehouse.com/forum/java-cannot-be-resolved-to-a-variable

요기 에러예가 참조할만 한 상황인듯도 하구요.

그리고

networkReader 인건 인스턴스죠 ㅡ.ㅡ

인스턴트를 말하면서 이야기 하자하시면 좀 아닌듯해요 그건.

예를 들면

String abcd;

에서 abcd만을가지고 이야기하자 하시면 저게 스트링일지 다른 무엇일지 만든사람만 알겠지요?

따라서 인스턴스는 해당 클래스와 동시에 보여주셔서 그게 먼지 보시는 분들이 확인할수 있게 사용하시는 것이 좋을 듯합니다. ^^

 

컴러기 (22,230 포인트) 님이 2015년 7월 15일 답변
라이언인데왜님이 2015년 7월 30일 채택됨
죄송합니다 제가 초보라 미쳐 생각을 못했네요 ㅜㅜ...
String line 은 클래스 제일 처음에 선언 해줬구요
networkReader = new BufferedReader(new InputStreamReader(socket.getInputStream(), "utf-8")); 로 AsyncTask를 상속받는 SocketConnect 라는 클래스를 하나 만들어서 선언해줬습니다.
line = networkReader().readLine(); 은 쓰레드 메소드를 만들고 내부에 선언해줬고 쓰레드 메소드를 소켓이 생성될때 시작하는거로 구현해뒀는데
소스를 다 보여드리자니 너무 긴거같아서 어떻게 보여드려야될지를 모르겠습니다...
에러의 내용은 line을 변수로 몬만들어 준다는 이야기 같은데요 훔.. line의 scope의 문제일 경우에 이런에러의 대부분의 경우인데.. 훔
혹시 코드상에 중복으로 line이 정의되었다던지 한것은 없는지 우선확인해보시고 차분히 범위를 따지는걸 먼저 해보시는건 어떨까요?
그간 바빠서 답변 채택을 못하고 있었네요 죄송합니다 ㅜㅜ
한동안 소스를 볼 시간이 없어서 아직 해결을 못했지만 답변 감사하구요
line은 string으로 선언할때와 readLine 부분을 저장시킬때, 그리고 토스트 메세지로 보여주려고 할때 말고는 쓰는 부분이 없습니다....
...