我想使用其IP地址通过wifi将我的文件保存在另一台Android设备的SD卡存储中。这怎么可能?我可以通过知道唯一的IP地址将文件发送到设备。这应该在Android中使用Java以编程方式完成。
我的代码(到目前为止)从Java工作,我们也可以发送文件,但我试过传递字符串:
class main {
public static void main(String[] args){
try {
String str = "hey sunny";
byte[] msg = new byte[1024];
msg = str.getBytes();
Socket s = new Socket();
s.connect(new InetSocketAddress("192.168.1.101",4044));
DataOutputStream dos=new DataOutputStream(s.getOutputStream());
dos.write(msg, 0, str.length());
s.close();
}
catch(Exception er) {
System.out.println(er.getMessage());
}
}
}
到目前为止,我不想在接收方使用此代码从套接字接收数据,因为我不希望在接收方安装我的应用程序,如:
public class MyActivity extends ActionBarActivity {
private TextView t;
private Button setUp;
private Context context=this;
private Socket clientSocket;
private ServerSocket socket;
String msg;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
t = (TextView)findViewById(R.id.t);
setUp = (Button)findViewById(R.id.setUpBtn);
setUp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {
@Override
public void run() {
try {
socket = new ServerSocket(4044);
clientSocket = socket.accept();
InputStream is = clientSocket.getInputStream();
byte[] bytes=new byte[1024];
int i;
ByteArrayOutputStream o = new ByteArrayOutputStream();
while ((i = is.read(bytes)) != -1)
o.write(bytes,0,i);
String s = new String(o.toByteArray(), "UTF-8");
msg = s;
clientSocket.close();
socket.close();
}
catch (Exception er) {
msg="error : - "+er.getMessage();
}
}
}).start();
t.setText(msg);
}
});
}
}
答案 0 :(得分:3)
首先,你应该清楚自己。告诉你到底想要什么。
你的标题说你不想使用serverSocket,为什么不呢?
您想要其他设备的SD卡上的文件,您打算如何做到这一点?你不能只是将文件发送到另一台设备,并认为它会下载你的文件。如果是这种情况,所有手机都将在任何时候被黑客入侵。
如果您没有想到这样的话,那么我认为最好将您的问题更改为:“如何通过wifi将文件存储在另一个Android设备上?”然后确保您的内容包含:
您已经知道的信息
您已经尝试过的事情
嗯,最后,为了回答你的问题,我认为这个人在解释你的问题方面做得很好:
http://android-er.blogspot.nl/2015/01/file-transfer-via-socket-between.html