使用计算机名

时间:2015-07-13 06:18:04

标签: android android-networking

在我的应用程序中有一台PC(win 7 As Web Server)和1-n android设备(As Client)。
网络是通过调制解调器/路由器。 Android设备应该连接到PC并发送/接收数据 我的问题是,每次网络重置时,调制解调器/路由器分配给PC的ip都不同,所以我想用PC-Name连接PC:

public static String ServerAddress = "Reza-PC";

或找到将计算机名称转换为计算机IP的方法 我怎么能这样做(如果可能的话)?

2 个答案:

答案 0 :(得分:0)

考虑使用WAN ip连接路由器外部的服务器电脑。您还需要执行port forwarding

答案 1 :(得分:0)

您可以使用JCIFS库来实现CIFS / SMB网络协议......简而言之,它允许您通过网络和/或带有共享文件夹的Windows PC发送和接收文件。

示例:

private boolean startSmbTransfer(String filename) {

    boolean IS_SUCCESS = true;
    File sourse = new File(Environment.getExternalStorageDirectory()
            + "/FolderName/" + filename);

    final String NETWORK_FOLDER = "smb://PC-NAME/FOLDER-NAEME/";

    SmbFileOutputStream sfos = null;
    InputStream is = null;
    try {

        NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(
                null);
        String path = NETWORK_FOLDER + sourse.getName();
        System.out.println("Path: " + path);

        SmbFile sFile = new SmbFile(path, auth);
        sfos = new SmbFileOutputStream(sFile);

        byte[] buf = new byte[512];
        is = new FileInputStream(sourse);
        int c = 0;
        while ((c = is.read(buf, 0, buf.length)) > 0) {
            sfos.write(buf, 0, c);
            sfos.flush();
        }

    } catch (Exception e) {
        e.printStackTrace();
        IS_SUCCESS = false;
    } finally {
        try {
            sfos.close();
            is.close();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            IS_SUCCESS = false;
        }
    }
    return IS_SUCCESS;
}

查看以下链接,了解使用此库的详细信息和示例, using JCIFS library in android