通常在c#中仅允许使用每个套接字地址(协议/网络地址/端口)的一种

埃桑·阿克巴尔(Ehsan Akbar)

我正在尝试使用网络连接到传感器,传感器的IP地址是端口3000上的192.168.2.44;

  try
        {

            byte[] byteReadStream = null; // holds the data in byte buffer
            IPEndPoint ipe = new IPEndPoint(IPAddress.Any,
                                            3000); //listen on all local addresses and 8888 port
            TcpListener tcpl = new TcpListener(ipe);
            while (true)
            {
                //infinite loop
                tcpl.Start(); // block application until data and connection
                TcpClient tcpc = tcpl.AcceptTcpClient();
                byteReadStream = new byte[tcpc.Available]; //allocate space

                tcpc.GetStream().Read(byteReadStream, 7000, tcpc.Available);

                Console.WriteLine(Encoding.Default.GetString(byteReadStream)
                                  + "\n")
                    ;
            }
        }
        catch (Exception e)
        {
            Console.WriteLine(e.ToString());
            Console.ReadLine();
        }

我收到此错误:

Only one usage of each socket address (protocol/network address/port) is normally permitted 

我的插座太新了

n00b

似乎您只是在每次尝试打开端口时才阻塞应用程序,直到有可用数据为止。不要尝试重新打开端口。而是让read函数等待

等待TcpClient数据可用的最佳方法?

  byte[] reap = new byte[2048];
  var memStream = new MemoryStream();

      IPEndPoint ipe = new IPEndPoint(IPAddress.Any,
                                        3000); //listen on all local addresses and 8888 port
        TcpListener tcpl = new TcpListener(ipe);

 tcpl.Start(); // block application until data and connection
 TcpClient tcpc = tcpl.AcceptTcpClient();

  int bytesread = tcpc.GetStream().Read(resp, 0, resp.Length);
  while (bytesread > 0)
  {
      memStream.Write(resp, 0, bytesread);
      bytesread = tcpc.GetStream().Read(resp, 0, resp.Length);
  }

这个想法是您与流进行交互,而不是与TcpClient进行交互。然后尝试每次读取一些字节。当然实际读取的内容可能更少。在我的示例中,我将结果放入内存流中。关键是您不要在每个循环周期都尝试重新连接,因为您已在先前的循环运行中打开了端口。

也可以考虑使用此Async,除非您很高兴在read方法中阻塞线程。通常,您还必须考虑优雅地关闭端口

虽然这将在此方法中修复您的代码,但是由于这些原因,您可能会收到错误消息。我会尽力帮助您发现它们

  1. 多次或通过多个线程调用此方法。在方法的开头放置一些Console.Writeline(“这应该发生一次”)以检测到

  2. 该端口已打开!使用“ netstat -an”或某些端口监视产品来检测到这一点。我建议关闭Visual Studio并检查一下

  3. 您有一些自动测试可以打开计算机上的端口。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

HttpClient:每个套接字地址(协议/网络地址/端口)通常仅允许使用一种

来自分类Dev

RestSharp响应通常,每个套接字地址(协议/网络地址/端口)仅允许使用一种

来自分类Dev

在启动tomcat时,通常仅允许每个套接字地址(协议/网络地址/端口)使用一种。

来自分类Dev

c#udp套接字通信-每个套接字地址(协议/网络地址/端口)通常仅允许使用一种

来自分类Dev

c#udp套接字通信-每个套接字地址(协议/网络地址/端口)通常仅允许使用一种

来自分类Dev

通常,每个套接字地址(协议/网络地址/端口)只能使用一种

来自分类Dev

在启动tomcat时,通常只允许每个套接字地址(协议/网络地址/端口)使用一种。

来自分类Dev

Rails服务器不工作,显示“ TCPServer错误:每个套接字地址(协议/网络地址/端口)通常只允许使用一种。”

来自分类Dev

Windows TCP / IP侦听器服务“通常只允许每个套接字地址(协议/网络地址/端口)使用一种”

来自分类Dev

在 ExchangeService 中,我遇到此错误通常只允许每个套接字地址(协议/网络地址/端口)使用一次 XX.XXX.XXX.XXX:443

来自分类Dev

通常,每个套接字地址只能使用一种(但我需要使用相同的端口...)

来自分类Dev

通常每个套接字地址只能使用一种(但我需要使用相同的端口...)

来自分类Dev

TcpClient套接字-每个套接字地址异常仅一种用法

来自分类Dev

网络地址中的&符

来自分类Dev

如何使用C#窗口发现侦听端口XX的服务器套接字的IP地址

来自分类Dev

如何在Android上将套接字绑定到本地wifi网络地址?

来自分类Dev

如何在Android上将套接字绑定到本地wifi网络地址?

来自分类Dev

网络地址识别

来自分类Dev

基于C#中Mac地址的套接字连接

来自分类Dev

Python-使用套接字将数据发送到网络上的每个IP地址

来自分类Dev

套接字EADDRINUSE(地址已在使用中)

来自分类Dev

套接字错误:地址已在使用中

来自分类Dev

Python套接字NAT端口地址

来自分类Dev

使用Python获取连接接口的网络地址

来自分类Dev

使用标准库处理Python CIDR网络地址

来自分类Dev

在Delphi XE5中使用FileGetSymLinkTarget不会返回它指向的网络地址

来自分类Dev

连接到本地 IP 地址 | C# 套接字

来自分类Dev

通常在元组的每个元素上调用成员函数

来自分类Dev

使用Unix套接字获取“地址已在使用中”错误

Related 相关文章

  1. 1

    HttpClient:每个套接字地址(协议/网络地址/端口)通常仅允许使用一种

  2. 2

    RestSharp响应通常,每个套接字地址(协议/网络地址/端口)仅允许使用一种

  3. 3

    在启动tomcat时,通常仅允许每个套接字地址(协议/网络地址/端口)使用一种。

  4. 4

    c#udp套接字通信-每个套接字地址(协议/网络地址/端口)通常仅允许使用一种

  5. 5

    c#udp套接字通信-每个套接字地址(协议/网络地址/端口)通常仅允许使用一种

  6. 6

    通常,每个套接字地址(协议/网络地址/端口)只能使用一种

  7. 7

    在启动tomcat时,通常只允许每个套接字地址(协议/网络地址/端口)使用一种。

  8. 8

    Rails服务器不工作,显示“ TCPServer错误:每个套接字地址(协议/网络地址/端口)通常只允许使用一种。”

  9. 9

    Windows TCP / IP侦听器服务“通常只允许每个套接字地址(协议/网络地址/端口)使用一种”

  10. 10

    在 ExchangeService 中,我遇到此错误通常只允许每个套接字地址(协议/网络地址/端口)使用一次 XX.XXX.XXX.XXX:443

  11. 11

    通常,每个套接字地址只能使用一种(但我需要使用相同的端口...)

  12. 12

    通常每个套接字地址只能使用一种(但我需要使用相同的端口...)

  13. 13

    TcpClient套接字-每个套接字地址异常仅一种用法

  14. 14

    网络地址中的&符

  15. 15

    如何使用C#窗口发现侦听端口XX的服务器套接字的IP地址

  16. 16

    如何在Android上将套接字绑定到本地wifi网络地址?

  17. 17

    如何在Android上将套接字绑定到本地wifi网络地址?

  18. 18

    网络地址识别

  19. 19

    基于C#中Mac地址的套接字连接

  20. 20

    Python-使用套接字将数据发送到网络上的每个IP地址

  21. 21

    套接字EADDRINUSE(地址已在使用中)

  22. 22

    套接字错误:地址已在使用中

  23. 23

    Python套接字NAT端口地址

  24. 24

    使用Python获取连接接口的网络地址

  25. 25

    使用标准库处理Python CIDR网络地址

  26. 26

    在Delphi XE5中使用FileGetSymLinkTarget不会返回它指向的网络地址

  27. 27

    连接到本地 IP 地址 | C# 套接字

  28. 28

    通常在元组的每个元素上调用成员函数

  29. 29

    使用Unix套接字获取“地址已在使用中”错误

热门标签

归档