2013-06-11 3 views
0

PC에서 안드로이드 장치로 연결하려고하면 "대상 컴퓨터가 적극적으로 거부했기 때문에 연결할 수 없습니다"라는 소켓 예외가 발생했습니다. 안드로이드 장치에서 서버의 코드 :PC와 안드로이드 장치 연결 문제 - SocketException

private void networkOperations() 
{ 
    Thread networkThread = new Thread (null, doBackgroundThreadProcessing, "Network"); 
    networkThread.start(); 
} 

private Runnable doBackgroundThreadProcessing = new Runnable() 
{ 
    public void run() { 
     backgroundThreadProcessing(); 
    } 
}; 

private void backgroundThreadProcessing() 
{ 
    Socket s = null; 
    ServerSocket ss = null; 
    try { 
     ss = new ServerSocket(8867); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    while(!Thread.currentThread().isInterrupted()) 
    { 
     try { 
      if (s == null) 
       s = ss.accept(); 
      BufferedReader input = new BufferedReader(new InputStreamReader(s.getInputStream())); 
      String st = null; 
      st = input.readLine(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

networkOperations()는 주요 활동의에서 onCreate() 메소드를 호출한다. PC에서 클라이언트의 코드 (C#을) :

class Connection 
{ 
    public Connection(String ip, String port) 
    { 
     Ip = IPAddress.Parse(ip); 
     Port = Convert.ToInt32(port); 
    } 

    public IPAddress Ip 
    { 
     get; 
     set; 
    } 

    public Int32 Port 
    { 
     get; 
     set; 
    } 

    public Boolean ConnectionError; 

    public Socket S; 

    public void ConnectToServer() 
    { 
     IPEndPoint ipe = new IPEndPoint(Ip, Port); 
     S = new Socket(ipe.AddressFamily, SocketType.Stream, ProtocolType.Tcp); 
     try 
     { 
      S.Connect(ipe); 
     } 
     catch (SocketException e) 
     { 
     } 
    } 

사람이이 문제 제발 도와 드릴까요? 감사.

+0

어떤 IP 주소로 전화를 사용하고 있습니까? 에뮬레이터 또는 실제 장치를 사용하고 있습니까? Wi-Fi 또는 이동 통신망을 통해 연결되어 있습니까? –

+0

장치의 외부 IP를 사용하여 PC에서 연결하고 있습니다. 실제 장치를 사용하고 있는데 wifi 네트워크를 통해 연결되어 있습니다. – floyd

+0

PC와 동일한 네트워크에 있습니까? 외부 IP 주소로 네트워크에있는 장치의 로컬 IP 주소 또는 공용 IP 주소를 의미합니까? (즉, 제공 업체가 귀하에게 준 경우) –

답변

0

의견을 바탕으로 두 가지주의해야 할 사항이 있습니다. 먼저, 공개 주소를 사용하여 로컬 네트워크의 장치에 연락하고 있습니다. 나는 모든 라우터가 이것을 제대로 할 수 있을지 확신하지 못하지만, 공용 액세스를 원할 경우 8867 포트를 전달해야합니다. 시도해보십시오, 도움이 될 수 있습니다.

여기에 라우터를 검색하고 해당 작업을 수행하는 방법에 대한 설명을 찾을 수 있습니다 : 발송 후 네트워크 외부에서 전화를 액세스 할 때 http://portforward.com/

전화는 확실히 사용할 수 있습니다. 물론 휴대 전화의 로컬 주소는 항상 동일해야합니다. 라우터 설정에서 예약하거나 전화기에서 수동으로 설정하십시오.

테스트 목적으로 PC의 전화 로컬 IP 주소를 사용해보십시오.

+0

감사합니다. 그래서 로컬 IP 주소를 사용하여 안드로이드 장치를 연결할 수 있습니까? 나는 그것이 필요하다고 생각했기 때문에 공용 IP 주소를 사용했습니다. – floyd

+0

시도해보십시오. 로컬 네트워크에서 가능해야합니다. 그 밖에있을 때, 당신은 할 수 없습니다. 미래의 독자들에게 답을 표시하십시오. –

관련 문제