Tag: 套接字

Bt套接字关闭异常

我建立一个应用程序,应该通过蓝牙套接字发送文件,但由于某种原因,我不断得到相同的例外。 错误消息说,套接字已经关闭,但我不明白如何或为什么它被关闭之前,我试图读取它。 用户将看到一个AlertDialog选项可供选择。 他们应该:1.配对设备。 2.发送文件到设备(目前在对话框中标记为“连接”)。 在选择连接选项后,设备配对后会发生异常。 当接收设备试图从套接字读取我得到这个异常: Process: com.example.zemcd.toofxchange, PID: 1074 java.io.IOException: bt socket closed, read return: -1 at android.bluetooth.BluetoothSocket.read(BluetoothSocket.java:588) at android.bluetooth.BluetoothInputStream.read(BluetoothInputStream.java:96) at java.io.BufferedInputStream.read1(BufferedInputStream.java:273) at java.io.BufferedInputStream.read(BufferedInputStream.java:334) at java.io.FilterInputStream.read(FilterInputStream.java:107) at kotlin.io.ByteStreamsKt.copyTo(IOStreams.kt:101) at kotlin.io.ByteStreamsKt.copyTo$default(IOStreams.kt:98) at kotlin.io.ByteStreamsKt.readBytes(IOStreams.kt:117) at com.example.zemcd.toofxchange.BluetoothUtils$Companion.receiveFile(BluetoothUtils.kt:82) at com.example.zemcd.toofxchange.ListenThread$run$acceptThread$1.run(BluetoothUtils.kt:104) at java.lang.Thread.run(Thread.java:761) 下面是用于pair,unpair和connect(用于发送数据)以及使用的线程子类的函数: class BluetoothUtils { companion object { var listener: ListenThread? = null val _UUID = […]

TCP数据有时不被java(或python)服务器接收

我正在开发一个由arduino mkr1000组成的系统,我想通过wifi发送数据到我的本地网络中运行的java服务器程序。 除了主要部分之外的一切工作:由arduino发送的数据有时不被服务器接收… 我正在使用arduino Wifi101库连接到我的wifi,获得WiFiClient并发送数据。 下面的代码只是一个演示问题的例子: for (int i = 0; i < 3; ++i) { Serial.println(F("Connecting to wifi")); const auto status = WiFi.begin("…", "…"); if (status != WL_CONNECTED) { Serial.print(F("Could not connect to WiFi: ")); switch (status) { case WL_CONNECT_FAILED: Serial.println(F("WL_CONNECT_FAILED")); break; case WL_DISCONNECTED: Serial.println(F("WL_DISCONNECTED")); break; default: Serial.print(F("Code ")); Serial.println(status, DEC); break; } } […]

服务器套接字侦听客户端与轮询服务的Android即时通讯应用程序

我目前正在编写一个即时通讯应用程序的Android以及服务器应用程序,我跑我的笔记本电脑。 服务器应用程序连接到一个SQL数据库(在同一台机器上),并验证登录信息,创建新的帐户,插入其他会话信息到数据库。 到目前为止,所有这些工作,但是我需要决定一个策略,我将如何将发送的邮件从服务器传递到所需的收件人。 我到目前为止: 客户端连接到服务器并发送包括发件人,收件人和消息的消息信息 服务器将信息存储在数据库中,并向发送方客户端发送指示成功或失败的响应 发送方客户端更新其视图以反映数据库中的任何更改或指示失败 现在我有两个不同的想法如何处理邮件传递给收件人 A.在android应用程序中创建一个服务来轮询服务器在数据库中的更改 B.在android应用程序中创建一个服务器套接字,用于侦听来自服务器的连接请求,并让服务器尝试向客户端发送每个新的更新 请让我知道这些方法的一些利弊,或者如果他们也许是我没有提到的更好的东西。 另外,我主要使用java这个,但与一些kotlin代码,如果这有什么区别。 我是一个自学成才的程序员,正在为实践而努力,与我以前所做的任何事情相比,这真是一个巨大的项目。 我将不胜感激任何帮助。 谢谢。

蓝牙插座不断超时

我正在开发一些测试来计算关于Android上的蓝牙连接的指标。 我的问题是随机套接字无法连接到远程设备,特别是涉及两个以上的设备时。 具体来说,大多数时候,当我尝试打开一个套接字时,我得到了臭名昭着的错误 连接读取失败,套接字可能关闭或超时,读取ret:-1 我已经尝试应用涉及到Java反射的修复,并没有工作。 我正在尝试开发的测试包括在执行一些测量时在设备环中发送令牌。 这个问题发生的概率随着时间而增加。 第一次测试可能会给出一些结果,但最终通常会失败。 是否有其他人遭受同样的问题? 对于那些有兴趣的人来说,代码(在Kotlin开发)在这里: GitHub项目 代码涉及到测试本身

蓝牙客户端Socket每次得到相同的异常

我正在写一个Android应用程序,主要是在Kotlin应该扫描蓝牙设备,并与他们配对。 我也希望它在后台运行一个蓝牙服务器套接字来等待连接尝试。 不过,当我试图调用BluetoothSocket.connect()方法时,我仍然遇到了同样的异常。 例外是: 10-10 20:07:57.917 18643-27894/com.example.zemcd.toofxchange E/Pairing Thread: error connecting java.io.IOException: read failed, socket might closed or timeout, read ret: -1 at android.bluetooth.BluetoothSocket.readAll(BluetoothSocket.java:754) at android.bluetooth.BluetoothSocket.readInt(BluetoothSocket.java:766) at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:388) at com.example.zemcd.toofxchange.PairingThread.run(BluetoothUtils.kt:83) 我读到,这可以解决类似的代码 btSocket = device.javaClass.getMethod("createRFcommSocket", Int::class).invoke(device, 1) as BluetoothSocket 但是这不起作用。 它导致应用程序崩溃,由NoSuchMethod引起的ReflectException 。 此外,我已经读过,这不是一个原因发布的方法,我想尝试使用发布的createRFcommSocketToServiceRecord()方法。 我不确定从哪里去,或者是什么导致IOException 。 此外,我甚至从来没有去配对屏幕。 我试图找出这个异常的原因,以及如何解决这个问题。 我的代码: class BluetoothUtils { companion object { val _UUID […]

Java连接套接字时有时会延迟2分钟?

我对以下神秘感到莫名其妙。 在测试我的应用程序时,我经常(可能是25%的时间)在连接SSL套接字时,延迟了两分钟。 我正在使用Java 8,Ubuntu 16.04。 当我使用wireshark时,我可以看到没有任何东西通过网络发送到目标服务器。 也许可能有像DNS解析一样的其他网络流量。 延迟时间总是2分钟,不确定性不超过几秒钟。 挂起之前的最后一条日志消息是: DEBUG org.apache.http.conn.ssl.SSLConnectionSocketFactory – Connecting socket to redacted:443 with timeout 0 在调试器中暂停验证它在类PlainSocketImpl中的套接字连接代码中被阻塞: native void socketConnect(InetAddress address, int port, int timeout) 我很确定我会注意到,如果这个挂起发生在其他应用程序,我认为这只是影响我的Java程序。 我的(Kotlin)代码如下: import org.apache.http.client.methods.HttpPost import org.apache.http.config.RegistryBuilder import org.apache.http.conn.socket.ConnectionSocketFactory import org.apache.http.conn.ssl.SSLConnectionSocketFactory import org.apache.http.entity.StringEntity import org.apache.http.impl.client.CloseableHttpClient import org.apache.http.impl.client.HttpClients import org.apache.http.impl.conn.PoolingHttpClientConnectionManager import org.apache.http.util.EntityUtils import java.security.SecureRandom import javax.net.ssl.* fun main(args: Array<String>) […]

通过Vert.x托管WebSocket,通过Socket.IO连接

我在Web服务(在Vert.x的Kotlin上编写)上设置了一个简单的WebSocket,然后通过Mocha / Socket.IO进行测试。 我的网络服务片段非常简单: httpServer.websocketHandler({ socket -> LOGGER.info("Websocket event!") LOGGER.info(" Path: ${socket.path()}") LOGGER.info(" Query: ${socket.query()}") LOGGER.info(" Headers: ${socket.headers()}") LOGGER.info(" URI: ${socket.uri()}") if (!socket.path().startsWith("/api/v1/ws/auction/")) { LOGGER.warn("Rejecting WS for lack of proper prefix, path: ${socket.path()}") socket.reject() } val split = socket.path().split("/api/v1/ws/auction/") if (split.size != 2) { LOGGER.warn("Rejecting WS for lack of Auction ID, with split: $split") socket.reject() […]

从套接字响应中逐字读入Kotlin字符中的空字符

所以说,我有一个从套接字连接返回的流。 流被返回终止'\ 0',但在kotlin我似乎无法得到这个以相同的方式工作。 下面的代码是在Java中,我可能只是看起来很简单。 public final String readUpToNull(InputStream inputStream) throws IOException { StringBuilder builder = new StringBuilder(); char ch; while ((ch = (char) inputStream.read()) != '\0') { builder.append(ch); } return builder.toString(); } 如果有人知道如何在与Kotlin中的流进行通信的同时进行此操作。 在这里的另一篇文章是覆盖阅读全文的文字。 套接字返回由'\ 0'分隔的较长的字符串。 所以问题是我需要能够加载第一个字符串,然后第二个字符串。 Example Server : hello\0 xml stuff all right here\0 Client: read hello Client: read xml stuff all right […]

如何获得Kotlin上的网页内容

我是Kotlin编程的新手,我想获取Google html内容 但我不知道我该怎么做