안드로이드 TCP/IP 클라이언트 포트문제입니다..(몇몇 무선랜 IP에서 접속이안되요)
글쓴이: mmx822 / 작성시간: 수, 2013/09/25 - 9:31오후
저번에도 올린적이 있습니다만..
저는 서버는 PC를 사용하고 클라이언트는 안드로이드 스마트폰을 써서 통신하는 프로젝트를 하는중인데요.
서버의 아이피가 유선인 경우는 통신이 잘되지만, 서버의 아이피가 LG U+Zone, 학교실습실AP, SKT Wifi 일 경우는 통신이 되지 않습니다.
안드로이드의 경우 최근 소켓통신을 할 때 AsyncTask나 Daemon Thread를 사용해야만 가능하도록 규정이 바뀐지라, AsyncTask도 Daemon Thread도 다 사용해보았지만, 여전히 통신이 되지 않는군요.
public class MainActivity extends Activity { private static String ip = "xxx.xxx.xxx.xxx"; // 서버 아이피 주소 private static int port = 2150; // PORT 번호 Socket socket; Handler h = new Handler(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ConnectThread connectThread = new ConnectThread(); connectThread.start(); } class ConnectThread extends Thread { public void run() { connect(); } } private void connect() { try { socket = new Socket(ip, port); } catch (Exception e) { e.printStackTrace(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
위는 테스트를 위해 간단히 만든 저의 안드로이드 클라이언트 코드입니다.
혹시 코드가 잘못된건 아닌지 하고 올린 것이니 참고해주세요.
학교ap나 U+Zone을 통해 교수님께 시연을 드려야하는데, 자꾸 이렇게 통신이 되지 않는 상황이 발생하니 미칠 것 같습니다.
고수분들 꼭 좀 도와주세요 ㅜ
Forums:
덧붙입니다..
통신 포트의 문제인가 싶어서 , 포트 또한 계속 바꾸고있지만 잘안됩니다.
어떤 분이 2000번대의 포트를 사용하면 잘될거다해서 2000번대 포트로도 해봤지만 잘되질 않네요..
그건 다른 문제예요.
해당 루트 공유가 차단한 경우일 것 같은데요.
회사의 경우, 외부에서의 접속은 불가능하지만, 내부 와이파이를 연결한 상태에서는 접속이 잘 되죠.
단순히 아이피와 포트의 문제는 아닐껍니다.
전에도 말씀드렸지만, 상황을 맞추시는 수밖에 없습니다.
학교 AP든 유플러스존이든 서버로서의 전용을 방지하기 위한 시스템이 들어있는 것으로 보입니다. (생각해보면 당연한 것이고요.) 헌데 이것은 해당 아이디어를 실제 상용화할 때에는 아무런 문제가 되지 않습니다. 그러니 그냥 간단히 서버랑 클라이언트를 같은 서브넷에 물린뒤 시연하시면 좋을것 같네요. 학교 AP든 유플러스존이든 그걸 이용하는 서브넷을 하나 구축하시고 서버 클라이언트를 모두 거기에 물리시면 됩니다.
아니면 교수님의 도움을 받아서 학교측에 요청을 하여 며칠간만 외부 연결이 가능한 IP를 받거나 포트를 매핑하시는 방법도 있겠네요.
시연 때 중요한 것은 아이디어이지 네트웍 연결상태가 아니라는 생각입니다.
--
댓글 달기