2012-07-02 2 views
0

을 사용할 수 없습니다 해결, 내가 볼 :와이파이 소켓, 안드로이드

0.0.0.0/0.0.0.0:xxxxx

(xxxx는 어떤 임의의 포트입니다)

서버에 대한 내 코드는 다음과 같습니다

try{ 
    Boolean end = false; 
    ServerSocket ss = new ServerSocket(0); 
    System.out.println("Program running, Server address:" + ss.getLocalSocketAddress().toString()); 
    while(!end){ 
     //Server is waiting for client here, if needed 

     Socket s = ss.accept(); 
     System.out.println("Socket Connected !"); 
     BufferedReader input = new BufferedReader(new InputStreamReader(s.getInputStream())); 
     PrintWriter output = new PrintWriter(s.getOutputStream(),true); //Autoflush 
     String st = input.readLine(); 
     System.out.println("Tcp Example From client: "+st); 
     output.println("Good bye and thanks for all the fish :)"); 
     s.close(); 

    } 
    ss.close(); 
} catch (Exception ex) { 
    ex.printStackTrace(); 
} 
+1

주 : 1. 당신은 사용해야합니다 ..

서버 측 코드 예제는 ..... 당신이 당신의 코드를 실행 도움이 될 수 있습니다 ... 내 코드를 참조하십시오 '로그'인스톨 es of'System.out.println()'2. ss가 범위를 벗어났습니다. 컴파일러는 알 수없는 변수라고 불평해야합니다. – overbet13

+0

전체 코드를 붙여 넣지 않아서 죄송합니다. 그 같은 컴파일러 오류가 없다, 그 이유는 단지 전체 코드가 내 질문에 코드 섹션 안에 들어오지 않았기 때문이다. 왜 전체 코드를 복사하지 않았는가 –

답변

0

망가 할당 "0"에서 ServerSocket의

포트 65535에서, 그러나 그 한 - 또한으로, 1024 위의 포트를 사용하려고 ... 65534이 사용하기 위해 등 텔넷, FTP, HTTP, 같은 다른 잘 알려진 서비스에 의해 사용

public class ServerTest { 

     ServerSocket s; 

     public void go() { 

      try { 
       s = new ServerSocket(4445); 

       while (true) { 

        Socket incoming = s.accept(); 
        Thread t = new Thread(new MyCon(incoming)); 
        t.start(); 
       } 
      } catch (IOException e) { 

       e.printStackTrace(); 
      } 

     } 

     class MyCon implements Runnable { 

      Socket incoming; 

      public MyCon(Socket incoming) { 

       this.incoming = incoming; 
      } 

      @Override 
      public void run() { 

       try { 
        PrintWriter pw = new PrintWriter(incoming.getOutputStream(), 
          true); 
        InputStreamReader isr = new InputStreamReader(
          incoming.getInputStream()); 
        BufferedReader br = new BufferedReader(isr); 
        String inp = null; 

        boolean isDone = true; 

        System.out.println("TYPE : BYE"); 
        System.out.println(); 
        while (isDone && ((inp = br.readLine()) != null)) { 

         System.out.println(inp); 
         if (inp.trim().equals("BYE")) { 
          System.out 
            .println("THANKS FOR CONNECTING...Bye for now"); 
          isDone = false; 
          s.close(); 
         } 

        } 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        try { 
         s.close(); 
        } catch (IOException e1) { 
         // TODO Auto-generated catch block 
         e1.printStackTrace(); 
        } 
        e.printStackTrace(); 
       } 

      } 

     } 

     public static void main(String[] args) { 

      new ServerTest().go(); 

     } 

} 
+0

이제 문제는 서버 코드와 관련이 없다. 안드로이드 장치간에 패킷 교환을 시도하고있다. 내 컴퓨터. 그래서 클라이언트 코드에서 어떤 소켓 주소가 사용되어야합니까? –

+0

@Kumar Vivek Mitra : 문서에 따르면 :'public ServerSocket (int port) - 주어진 포트에 바인딩 된 새로운 ServerSocket 인스턴스를 생성합니다. 백 로그는 50으로 설정됩니다. 포트 == 0 인 경우, 포트는 OS에 의해 할당됩니다.' – overbet13

+0

@ bicska88 나는 클라이언트가 어떤 포트가 서버가 실행 중인지를 어떻게 알 수 있습니까? 운영 체제. –

관련 문제