我正在考虑开发一个iPhone和Android应用程序,以便他们可以通过蓝牙在彼此之间共享数据.可能吗?如果有,怎么样?
谢谢你的帮助
我在通过蓝牙套接字发送大文件时遇到问题.较小的文件正确传输.我相信最多可以正确传输161280个字节.
编辑:我做了一些测试并缩小了原因.看起来
outStream.write(mybytearray, 0, mybytearray.length);
Run Code Online (Sandbox Code Playgroud)
在发送代码部分不写超过161280字节.我通过不关闭套接字连接看到了这种行为,从而导致read接收部分在161280字节上"阻塞".这里的蓝牙输出流有什么问题?我究竟做错了什么?
编辑2: 这样做让它通过.
for(int i = 0 ; i < mybytearray.length ; i++){
outStream.write(mybytearray[i]);
}
Run Code Online (Sandbox Code Playgroud)
发送代码:
try {
outStream = mBluetoothSocket.getOutputStream();
Log.d(TAG,"outStream created success!");
} catch (IOException e) {
Log.d(TAG,
"ON RESUME: Output stream creation failed.",
e);
}
File myFile = new File(file_name);
Log.d(TAG,"file /source.pdf created success!");
byte[] mybytearray = new byte[(int)myFile.length()];
Log.d(TAG,"file length() =" + (int)myFile.length());
FileInputStream fis = new FileInputStream(myFile);
Log.d(TAG,"fis created");
BufferedInputStream bis = new BufferedInputStream(fis,1272254 );
Log.d(TAG,"bis created …Run Code Online (Sandbox Code Playgroud) 问题:无法通过XMPP和OpenFire Server接收发送到我的Android应用程序的文件.我可以成功发送文件.我使用的asmack jar是asmack-jse-buddycloud-2010.12.11.jar
代码:
connConfig = new ConnectionConfiguration("beta.myCompany.co.uk", 5222);
connConfig.setSASLAuthenticationEnabled(true);
try {
connect("username", "password");
} catch (Exception e) {
e.printStackTrace();
}
ServiceDiscoveryManager sdm = ServiceDiscoveryManager.getInstanceFor(connection);
if(sdm == null)
sdm = new ServiceDiscoveryManager(connection);
fileTransferManager = new FileTransferManager(connection);
FileTransferNegotiator.setServiceEnabled(connection, true);
fileTransferManager.addFileTransferListener(new FileTransferListener() {
@Override
public void fileTransferRequest(FileTransferRequest request) {
IncomingFileTransfer transfer = request.accept();
try {
FileOutputStream fos = openFileOutput(request.getFileName(), Context.MODE_PRIVATE);
InputStream stream = transfer.recieveFile();//THIS FAILS!
fos.write(IOUtils.toByteArray(stream));
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
错误(如果文件是通过Spark发送的): …
我是使用Apache Common vfs的新手,我成功连接到我已经阅读过docs的服务器但是我坚持使用这段代码.我如何列出目录/文件?
....
Session session = null;
FileSystemManager fsManager = null;
FileSystem fs = null;
try {
String host = "host_here";
int port = 22;
String userStr = "user_here";
char [] username = userStr.toCharArray();
String passStr = "password_here";
char [] password = passStr.toCharArray();
session = SftpClientFactory.createConnection(host, port, username, password, null);
//session.connect();
System.out.println("Connected to the server");
FileSystemOptions opts = new FileSystemOptions();
fsManager = VFS.getManager();
FileObject file = fsManager.resolveFile("ftp://"+userStr+":"+passStr+"@"+host+"/home/", opts);
// .... whats next i do here? .....
} catch (Exception …Run Code Online (Sandbox Code Playgroud) 嗨我的最终目标是在两台设备之间使用android直接api在android中传输文件.一旦设备充当客户端,另一个充当服务器,就像在wifi直接sdk演示中一样.为此,使用服务器端口和主机地址从客户端创建套接字.我想传输多个文件.在接收器端接受客户端套接字连接时,我必须使用从客户端发送的文件的文件名创建文件.但我不知道服务器端的文件名.
那么如何使用套接字连接为这个wifi直接传输模式发送文件名进行多文件传输.
使用服务器端口和主机地址从客户端创建套接字:
fileUris = intent.getExtras().getParcelableArrayList(EXTRA_STREAM);
String host = intent.getExtras().getString(
EXTRAS_GROUP_OWNER_ADDRESS);
Socket socket = new Socket();
int port = intent.getExtras().getInt(EXTRAS_GROUP_OWNER_PORT);
try {
Log.d(WifiDirectActivity.TAG, "Opening client socket - ");
socket.bind(null);
socket.connect((new InetSocketAddress(host, port)),
SOCKET_TIMEOUT);
Log.d(WifiDirectActivity.TAG,
"Client socket - " + socket.isConnected());
OutputStream stream = socket.getOutputStream();
ContentResolver cr = context.getContentResolver();
InputStream is = null;
for (int i = 0; i < fileUris.size(); i++) {
Uri uri = fileUris.get(0);
try {
is = cr.openInputStream(Uri.parse(uri.toString()));
} catch (FileNotFoundException e) {
Log.d(WifiDirectActivity.TAG, e.toString());
}
DeviceDetailFragment.copyFile(is, …Run Code Online (Sandbox Code Playgroud) 我尝试连接三星Galaxy S2和三星Galaxy Nexus上的USB调试器.它仍然设法在两个设备上都失败了.目前我使用的是Windows XP,但我的想法已经不多了.
这是我尝试过的:
有没有人有这个类似的问题,可以分享一个解决方案?
编辑*两个设备三星Galaxy S2和三星Galaxy Nexus能够连接到PC而不是调试器.即使安装了三星Kias,安装了不同差异的驱动程序.
我明天将为50个代表增加一笔赏金.我真的需要测试我在实际手机上做的事情.
我正在尝试使用XMPPFramework和OpenFire通过iOS上的XMPP进行文件传输.我的代码基础来自以下教程.我有一个成功的TurnSocket(XEP-0065:SOCKS5 Bytestreams)连接,但我无法工作如何使用它来发送数据.我有两个注意事项,我都坚持这两个:1.调用[socket writeData]和2.使用'XEP-0096:SI文件传输'.
可能的解决方案1 - 调用[socket writeData] 在我的App委托中,我有一个didSucceed方法.我可以像这样调用[socket writeData] ...
- (void)turnSocket:(TURNSocket *)sender didSucceed:(GCDAsyncSocket *)socket {
NSLog(@"TURN Connection succeeded!");
[socket writeData:myData withTimeout:60.0f tag:0];
[turnSockets removeObject:sender];
}
Run Code Online (Sandbox Code Playgroud)
6月14日更新:这是正确的吗?如果是这样,其他用户如何读取数据?我试过实施
- (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag
Run Code Online (Sandbox Code Playgroud)
但它永远不会被召唤.我如何确保它被调用?
可能的解决方案2 - XEP-0096:SI文件传输 我是否需要使用XEP-0096:SI文件传输?如果是这样,我如何在我需要形成的XEP-0096 XML中使用我的成功连接?在XEP-0096文档意味着有一个"哈希"属性,但我不知道该从何而来.
例如
<iq type='set' id='offer1' to='receiver@jabber.org/resource'>
<si xmlns='http://jabber.org/protocol/si'
id='a0'
mime-type='text/plain'
profile='http://jabber.org/protocol/si/profile/file-transfer'>
<file xmlns='http://jabber.org/protocol/si/profile/file-transfer'
name='test.txt'
size='1022'
hash='552da749930852c69ae5d2141d3766b1'
date='1969-07-21T02:56:15Z'>
<desc>This is a test. If this were a real file...</desc>
</file>
<feature xmlns='http://jabber.org/protocol/feature-neg'>
<x xmlns='jabber:x:data' type='form'>
<field var='stream-method' type='list-single'> …Run Code Online (Sandbox Code Playgroud) 假设在同一个本地网络上,我们有两个使用 Express 设置的 Node JS 服务器:服务器 A 用于 API,服务器 F 用于表单。
在接收服务器是 Express API 的两个 NodeJS 服务器之间发送文件的最有效方法是什么?文件大小在哪里重要?
如果我发送的文件是 PDF 文件(不会超过 50mb),将整个内容作为字符串通过 HTTP 发送是否有效?
算法如下:
在这个算法中,Server A(存储到MongoDB时)和Server F(发送到Server A时)都将文件读入内存,两台服务器之间的请求大小与文件大小相同. (50Mb 的请求可以吗?)
但是,需要考虑的一件事是 - 使用这种方法 - 我将在整个过程中使用 ExpressJS 风格的 API,这将与应用程序的其余部分保持一致,其中/list,/details请求也在路由中定义。我喜欢一致性。
与此算法相反,我探索了https://github.com/nkzawa/socket.io-stream方式,它脱离了服务器 A …
我可以通过 SSH 连接到 EC2 实例:
\n\nssh -i "my_key.pem" ec2-user@my-public-ip\nRun Code Online (Sandbox Code Playgroud)\n\n但是,scp 不起作用:
\n\nscp -r \xe2\x80\x93i "my_key.pem" ./my_file ec2-user@my-public-ip:/home/ec2-user/my_file\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n\n权限被拒绝(公钥)。
\n
\n 失去连接
我也尝试过使用公共实例 DNS,但没有任何变化。
\n\n知道为什么会发生这种情况以及如何解决吗?
\n如何在VM实例中打开浏览器?以及这有多安全/不安全?
实例是Ubuntu 16.04
我知道访问VM的唯一方法是通过Google在云控制台网站上提供的SSH按钮。
我想定期使用它,以可视方式显示页面并单击鼠标。(以新手的身份对待我,我在Linux和VM上都是全新的。我什至不知道还有另一种控制浏览器的方法)
内容:
I need to download a huge amount of data from websites to my virtual machine on Google Compute Engine.
I know there are solutions on the web to transfer files from my machine, but my internet really sucks, it's not feasible.
I also know there are some commands like wget using copied cookies to download some files.
Even though, I feel I'll be needing to use a browser, especially because I want …