2012-08-16 3 views
1

나는 5 개의 도메인 서버를 가지고 있으며, 내 안드로이드 애플리케이션에서 자바 소켓 프로그래밍을 사용하여 그 서버에 연결하려고합니다. 여기자바 소켓 프로그래밍에서 알 수없는 호스트 이름

내 서버가 "ANY1.g %%%%%%%%. DK" "ANY2.g이 %%%%%%%%. DK" "ANY3.g %%%%%% %%. " "ANY4.g을 %%%%%%%% DK. " "ANY5.g을 %%%%%%%% DK. "

을 DK 그래서 때 서버의 비아 I 핑 (ping) Ping 명령을 실행 프롬프트에서 완벽하게 작동하고 응답을 받고있다.

하지만이 서버를 사용하여 소켓을 크레이트하려고 할 때 "알 수없는 호스트"오류가 발생합니다. 허용됩니다 코드 또는 어떤 제안에 문제가

try 
{ 
    hostname = "ANY SERVER DOMAIN NAME"; 
    port = ANY; 
    socket = new Socket(hostname, port); 
    socket.setReceiveBufferSize(2048); 
    socket.setKeepAlive(true); 
    Log.e("SOCKET",socket.isConnected()); 
} 
catch(Exception e) 
{ 
    Log.e("ERROR",e.getMessage()); 
} 

있습니까 : 여기

내 코드?

Menifest 파일 :

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.siliconithub.android.greencall" 
    android:versionCode="1" 
    android:versionName="1.0" > 

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.READ_CONTACTS" /> 
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
<uses-permission android:name="android.permission.WRITE_CONTACTS" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.CALL_PHONE" /> 
<uses-permission android:name="android.permission.VIBRATE" /> 
<uses-permission android:name="android.permission.SEND_SMS" /> 

<supports-screens 
    android:anyDensity="true" 
    android:largeScreens="true" 
    android:normalScreens="true" 
    android:resizeable="true" 
    android:smallScreens="true" /> 

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="15" /> 

<application 
    android:icon="@drawable/ic_app_icon" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".GreenCall" 
     android:label="@string/title_activity_green_call" 
     android:screenOrientation="portrait" 
     android:theme="@android:style/Theme.NoTitleBar" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".RecentCallActivity" 
     android:label="@string/title_activity_recentcall" 
     android:screenOrientation="portrait" 
     android:theme="@android:style/Theme.NoTitleBar" > 
    </activity> 
    <activity 
     android:name=".RecentCallDetailActivity" 
     android:label="@string/title_activity_recentcall_detail" 
     android:screenOrientation="portrait" 
     android:theme="@android:style/Theme.NoTitleBar" > 
    </activity> 
    <activity 
     android:name=".FavouritesActivity" 
     android:label="@string/title_activity_fovourites" 
     android:screenOrientation="portrait" 
     android:theme="@android:style/Theme.NoTitleBar" > 
    </activity> 
    <activity 
     android:name=".ContactsActivity" 
     android:label="@string/title_activity_contacts" 
     android:screenOrientation="portrait" 
     android:theme="@android:style/Theme.NoTitleBar" > 
    </activity> 
    <activity 
     android:name=".ContactDetailsActivity" 
     android:label="@string/title_activity_contactdetails" 
     android:screenOrientation="portrait" 
     android:theme="@android:style/Theme.NoTitleBar" > 
    </activity> 
    <activity 
     android:name=".TelnetServerActivity" 
     android:label="@string/title_activity_telnetserver" 
     android:screenOrientation="portrait" 
     android:theme="@android:style/Theme.NoTitleBar" > 
    </activity> 
    <activity 
     android:name=".SettingActivity" 
     android:label="@string/title_activity_setting" 
     android:screenOrientation="portrait" 
     android:theme="@android:style/Theme.Black" > 
    </activity> 
    <activity 
     android:name=".SearchContactsActivity" 
     android:label="@string/title_activity_search_contacts" 
     android:screenOrientation="portrait" 
     android:theme="@android:style/Theme.NoTitleBar" > 
    </activity> 

    <service 
     android:name=".UpdateStatusService" 
     android:label="@string/title_service_update_status" 
     android:icon="@drawable/ic_app_icon" 
     android:enabled="true" /> 

    <receiver android:name=".PhoneStateBroadcastReceiver" > 
     <intent-filter> 
      <action android:name="android.intent.action.PHONE_STATE" /> 
     </intent-filter> 
    </receiver> 
</application> 
</manifest> 

당신을 감사합니다.

+0

'android.permission.INTERNET'을 매니페스트에 추가 했습니까? – sherpya

+0

예 인터넷 허용은 이미 안드로이드 menifest 파일에 주어집니다. –

+0

** Frontend1.greencall.dk **의 IP 주소를 알고 있습니까? – user370305

답변

2
import java.net.Socket; 
public class Main { 
    public static void main(String[] args) { 
     try { 
      Socket socket = new Socket("%%%%.%%%%%.dk", PORT NUMBER); 
      socket.setReceiveBufferSize(2048); 
      socket.setKeepAlive(true); 
      System.out.println("socket " + socket.isConnected()); 
     } catch (Exception e) { 
      System.out.println("error " + e.getMessage()); 
     } 
    } 
} 

이 자바에서

socket true 

(NO 안드로이드)을 반환합니다. 그것은 안드로이드에서도 작동합니다 (sherpya가 테스트 해 보았습니다 - 아래 그의 주석 참조). 나는 당신의 허가에 잘못된 것이 있다고 생각합니다. 당신의 매니 페스트를 우리에게 보여줄 수 있습니까?

+0

이제 나의 menifest 파일을 편집했습니다. 이제 그걸 볼 수 있습니다. –

+1

나는 똑같은 코드를 안드로이드에서 테스트했고 작동했습니다. – sherpya

+0

@sherpya 테스트 해 주셔서 감사합니다. – brimborium

1

가장 좋은 방법은 InetAddress + SocketAddress을 사용하여 호스트를 확인한 다음 소켓을 사용하여 연결하는 것입니다. 시도 :

InetAddress addr = InetAddress.getByName("ANY1.g%%%%%%%.dk"); 
SocketAddress sockaddr = new InetSocketAddress(addr, 443); 
socket = new Socket(); 
socket.connect(sockaddr, timeoutint) 
+0

나는이 코드도 시도했지만 다른 DNS를 위해 일하고 있지만 그 목록에는 나와 있지 않습니다. –

관련 문제