在我的应用程序中有一台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的方法 我怎么能这样做(如果可能的话)?
答案 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