android设备上的套接字连接拒绝错误

服务劳里森

我有一个与条形码扫描仪配对的android设备。该设备的设置是,每次扫描仪读取条形码时,都会使用广播Intent,而我的应用程序会捕获数据,向其中添加一些信息,打开服务器的套接字并发送数据。

[BroadcastReceiver(Enabled = true)]
public class FingerScannerReceiver : BroadcastReceiver
{
    public override void OnReceive(Context context, Intent intent)
    {
        using (TcpClient client = new TcpClient(ip, port))
        {
            NetworkStream stream = client.GetStream();
            var b = Encoding.ASCII.GetBytes(decodedData);
            stream.Write(b, 0, b.Length);
        }
    }
}

该应用程序还具有在端口3333上运行的TCP侦听器。服务器检索数据并打开端口3333的套接字,然后将信息发送回去。

服务器的TcpListener代码:

        while (_isServerWorking)
        {
            using (var client = await _server.AcceptTcpClientAsync())
            {
                string data = "";
                NetworkStream stream = client.GetStream();

                byte[] bytes = new byte[32267];

                int n;
                while ((n = stream.Read(bytes, 0, bytes.Length)) > 0)
                    data += Encoding.ASCII.GetString(bytes, 0, n);
                OnServerConnected(args);
            }
        }

这通常可以正常工作,但每天一次或两次设备无法连接,则会返回拒绝连接的套接字错误。在服务器端,netstat表示有很多套接字处于CLOSE_WAIT状态

TCP 172.17.0.85:58627 192.168.30.28:41682 CLOSE_WAIT
TCP 172.17.0.85:58627 192.168.30.28:41684 CLOSE_WAIT
TCP 172.17.0.85:58627 192.168.30.28:41686 CLOSE_WAIT

总共有187个错误,因此我认为拒绝连接被返回。我想说客户端和服务器套接字都正确关闭了,但是一定有问题。

这是怎么了?意图上的套接字连接是否应在android上以不同的方式处理?我应该以其他方式关闭插座还是设置一些选项?

lo

在客户端,您需要处置/关闭套接字:

using (TcpClient client = new TcpClient(ip, port))

在服务器端,客户端套接字也是如此:

using (var client = await _server.AcceptTcpClientAsync())

这里有比赛条件。当双方都试图在同一时间关闭另一端时,插座将永远挂在CLOSE_WAIT中。

将服务器更改为:

var client = await _server.AcceptTcpClientAsync();

不使用

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Postgres DB无法在Mac OSX上启动:错误提示:Unix域套接字上的连接

来自分类Dev

Node.js套接字连接错误

来自分类Dev

Android套接字连接的IP错误导致冻结

来自分类Dev

连接错误:套接字上的参数无效

来自分类Dev

OpenSSL:套接字:连接被拒绝连接:errno = 111

来自分类Dev

python套接字拒绝连接

来自分类Dev

Java套接字编程中的连接拒绝错误

来自分类Dev

无法在Treeline上连接套接字

来自分类Dev

Python套接字仅在浏览器上拒绝连接

来自分类Dev

Android套接字连接超时

来自分类Dev

保护硬件设备上的网络套接字

来自分类Dev

Android套接字连接被拒绝ETIMEDOUT(连接超时)

来自分类Dev

UNIX套接字连接被拒绝

来自分类Dev

TCP套接字拒绝连接错误#10061

来自分类Dev

套接字连接错误'null',Android

来自分类Dev

套接字错误110:连接超时-Android Delphi SMTP Gmail

来自分类Dev

Android TCP套接字错误

来自分类Dev

套接字IO连接在Android上失败

来自分类Dev

Java套接字上的Docker:java.net.ConnectException:连接被拒绝(连接被拒绝)

来自分类Dev

vnc查看器错误:无法连接到套接字:连接被拒绝(111)

来自分类Dev

套接字编程连接错误

来自分类Dev

连接中的Lua套接字错误

来自分类Dev

Java套接字编程中的连接拒绝错误

来自分类Dev

Python SimpleXMLRPCServer:套接字错误,连接被拒绝

来自分类Dev

PHP套接字连接-Telnet拒绝连接

来自分类Dev

套接字错误:[Errno 111]在Ubuntu上拒绝连接

来自分类Dev

在10.0.0.2(同一台机器)上,Android(仿真器)套接字权限被拒绝

来自分类Dev

Vnc 查看器错误:无法连接到套接字:CentOS 8 中的连接被拒绝 (111)

来自分类Dev

客户端套接字连接被拒绝

Related 相关文章

热门标签

归档