Articles of tcp

如何使两个Android设备通过TCP进行通信

我们想在两个Android设备之间建立TCP / IP连接。 目前我们认为如果我们将连接设备设置为设备会更简单。 所以这两部手机之间没有服务器。 大多数时候(如果不总是)一个没有真正的IP地址(NAT等)。 这是创建TCP套接字的问题吗? 我没有find任何确切的信息。 任何建议和意见将受到高度赞赏。 谢谢

用于iOS / Android应用程序通信的基于TCP的RPC服务器(Erlang或类似的东西?)

我正在iOS和Android中构建本机移动应用程序。 这些应用程序需要与服务器进行“实时”更新,与任何其他基于网络的应用程序一样(Facebook,Twitter,社交游戏,如Words with Friends等) 我认为使用HTTP长轮询是因为长轮询可能对电池寿命有害,尤其是在大量TCP设置/拆除时。 让移动应用程序使用持久性TCP套接字建立与服务器的连接,并将RPC样式命令发送到服务器以进行所有Web服务通信可能是有意义的。 当然,这需要服务器处理长期存在的TCP连接,并且一旦理解了传递到TCP管道的数据,就能够与Web服务通信。 我正在考虑使用JSON或XML以纯文本格式传递数据。 也许基于Erlang的RPC服务器可以很好地用于这样的基于网络的应用程序。 这将允许移动应用程序通过一个连接从服务器发送和接收数据,而无需多个设置/拆卸,单个HTTP请求将使用类似iOS上的NSURLConnection。 由于不涉及Web浏览器,因此我们无需在移动客户端级别处理HTTP的细微差别。 很多这些“COMET”和长轮询/流媒体服务器都是基于HTTP构建的。 我认为只使用TCP上的纯文本协议就足够了,可以使客户端更具响应性,允许从服务器接收更新,并通过传统的长轮询和流模型保持电池寿命。 目前是否有人使用其原生iOS或Android应用程序执行此操作? 您是否编写了自己的服务器,或者是否有一些开源的东西,我今天可以开始使用而不是重新发明轮子? 有没有理由为什么只使用基于TCP的RPC服务比使用HTTP更糟糕? 我还研究了HTTP流水线技术,但在客户端实现它时看起来并不值得。 此外,我不确定它是否允许在客户端服务器通信通道中进行双向通信。 任何见解将不胜感激。

我们可以直接从Android设备发送数据到另一台android设备(p2p)吗?

我需要发送数据从一个Android设备到另一个Android设备直接(P2P)后,他们通过服务器find对方。 我读了一些东西,这是不能做的,但我不明白为什么可以访问互联网(它有一个IP权利?)的设备不能创build一个对等连接? 如果这不可能,为什么? 如果是这样的话? PS:我知道没有互联网我们不能达到这个目的,这个问题假设两个目标都有互联网连接,无论是gprs / 3g / 4g还是wifi互联网连接! 注意:我希望这是可能的无线和非WiFi互联网!

如何使Android上的客户端在C#上监听服务器?

我有Android上的客户端和C#上的服务器。 客户端发送消息到服务器,这很好。 但我需要服务器发送请求列表中的文件夹和文件在指定的目录,不知道该怎么做,因为客户端没有得到任何消息从服务器。 客户端的部分代码是用来监听的,但是应用程序只是在closures服务器应用程序之前进行了一些操作,然后再次运行,但是仍然不会读取任何内容。 提前致谢 客户: package com.app.client.app; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStream; import java.io.OutputStreamWriter; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException; import android.util.Log; public class my_activity extends Activity { private TextView txt; @Override public void onCreate(Bundle savedInstanceState) { […]

无法通过无线连接通过亚行的Android – 我需要root访问?

我基本上是这样做的: 我怎样才能通过TCP连接到与ADB的Android? 与Droid X2。 我有USBdebugging,我的手机通过USB插入。 IP地址是10.0.78.33(我已经validation了我可以在该IP上的电话上进行TCP通信,我可以ping通它)。 我去命令行并执行以下操作: >> adb tcpip 5555 在TCP模式下重新启动端口:5555 >> adb connect 10.0.78.33:5555 无法连接到10.0.78.33:5555 任何想法,为什么这是行不通的? 为了做到这一点,我需要root权限吗? 我试图避免生根电话。 谢谢!

Android的TCP服务器客户端通信

我在这里find了一个写得很好的教程,用于在android上进行服 奇迹般有效。 但这只是沟通的一种方式。 我想在客户端听服务器响应,但不知道我在这里错了。 这里是我尝试进行更改的服务器的代码。 服务器 public class Server extends Activity { private ServerSocket serverSocket; Handler updateConversationHandler; Thread serverThread = null; private TextView text; public static final int SERVERPORT = 8080; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); text = (TextView) findViewById(R.id.text2); updateConversationHandler = new Handler(); this.serverThread = new Thread(new ServerThread()); this.serverThread.start(); } @Override […]

react-native-tcp不适用于Android 7+

我正在开发的应用程序在Android和iOS的所有其他版本中运行良好,但networkingfunction是真正的中心。 我没有额外的debugging信息。 但有几个问题。 在主线程上调用react-native-tcp吗? 在这种情况下,它不会驱逐一个错误? https://developer.android.com/about/versions/nougat/android-7.0-changes.html 如果是这样,我怎么能在其他线程上使用它? 编辑:似乎一次只能打开一个套接字,无论其UDP或TCP,如果我试图打开2并行它不会让我们。

在Android-x86上网本上使用基于蓝牙的ADBdebugging应用程序

我设法在我的上网本上设置了一个很好的工作的Android-x86,并启用了蓝牙,并与我的Windows 7开发工作站配对(!)。 我最初希望能像使用USB一样使用真正的手机来使用adb。 所以我插入了一个专用的USB公头到公头电缆,没有发生任何事情。 原来Android-x86不支持通过USB线连接。 然后我find了关于如何通过WiFi来做ADB的 很好的说明 。 问题是我在我的Android-x86上网本上有WiFi,但在我的Windows 7台式机上没有。 我可以select购买WiFiencryption狗,但我更喜欢更直接的解决scheme。 我碰巧在我的Android-x86上网本和我的电脑上都有蓝牙function,所以我希望能find一个解决scheme,使我能够通过蓝牙快速使用ADB 。 我在这里发现了非常令人鼓舞的指令: https : //stackoverflow.com/a/11129818,但不幸的是,我所谓的基于ADB over Network无处可寻我的Android-x86设备上。 任何提示或想法如何通过蓝牙使ADB在我的Android-x86上网本上工作? 我相信,如果我可以让我的Android-x86的蓝牙有一个IP地址,我可以从那里去,但我该怎么做呢? ( ifconfig在Android的terminal模拟器中不起作用)。

android如何发送和接收图像和位置(使用地图)在群聊中使用xmpp-smack

我正在开发使用android–xmpp的群聊应用程序,因为我不知道如何发送和recive图片图片或位置(使用地图)。 所以任何一个人都可以请给我这样做的方式。 目前,我得到了短信和添加到列表视图,如下, Message msg = new Message(to, Message.Type.groupchat); msg.setBody(text); if (Constants.connection != null) { try { Constants.connection.sendPacket(msg); Log.d("Send to room : Name : ", to); Log.d("store", "store data to db"); //DBAdapter.addUserData(new UserData(text, "", "1" ,beam_id)); } catch (Exception e) { Log.d("ooo", "msg exception" + e.getMessage()); } messages.add(text); runOnUiThread(new Runnable() { public void run() { […]

在Java / Android中更快地检测到损坏的套接字

背景 我的应用程序从手机收集数据并发送到远程服务器。 数据首先存储在内存中(或足够大的文件),每隔X秒左右,应用程序就会刷新数据并将其发送到服务器。 每个数据发送都是成功的关键,我宁愿把数据发送两次也不发送。 问题 作为testing,我设置应用程序每5秒发送带有时间戳的数据,这意味着每隔5秒在服务器上出现一个新行。 如果我杀了服务器,我希望线路停止,他们现在应该被写入内存。 当我再次启用服务器时,我应该能够确认没有事件丢失。 但问题是,当我杀死服务器时,IO操作开始失败大约需要20秒,这意味着在这20秒内,应用程序愉快地发送事件并将它们从内存中移除,但是它们永远不会到达服务器并且永远丢失。 我需要一种方法来确保数据实际到达服务器。 这可能是更基本的TCP问题之一,但不是更less,我还没有find任何解决办法。 我试过的东西 设置Socket.setTcpNoDelay(true) 删除所有缓冲的作家,直接使用OutputStream 每次发送后冲洗stream 附加信息 我不能改变服务器如何响应,意思是我不能告诉服务器确认数据(比TCP的机制更多),服务器只是静静地接受数据而不发送任何东西。 代码片段 课程初始化: socket = new Socket(host, port); socket.setTcpNoDelay(true); 数据发送地点: while(!dataList.isEmpty()) { String data = dataList.removeFirst(); inMemoryCount -= data.length(); try { OutputStream os = socket.getOutputStream(); os.write(data.getBytes()); os.flush(); } catch(IOException e) { inMemoryCount += data.length(); dataList.addFirst(data); socket = null; return […]