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

红蜘蛛

使用TcpClient和TcpListener时会抛出此异常,我有点茫然。第一次运行,然后再次运行,并收到以下异常:

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

我已检查以确保关闭所有打开的连接。我尝试过手动调用TcpClient上的close以及使用IDisposable using模式,但仍然存在相同的问题。

这是代码,如果您将其复制粘贴到Visual Studio中,它应该可以运行(前提是您已添加了以下using语句)

using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Threading.Tasks;

internal class Program
{
    private static void tcpClientConnection()
    {
        Console.WriteLine("Ready");
        Console.ReadKey();

        IPAddress address = IPAddress.Parse("127.0.0.1");

        using (TcpClient client = new TcpClient(new IPEndPoint(address, 8087)))
        {
            client.Connect(new IPEndPoint(address, 8086));

            using (NetworkStream ns = client.GetStream())
            {
                ns.Write(System.Text.Encoding.ASCII.GetBytes("Hello"), 0, "Hello".Length);
                ns.Flush();
            }

            Console.WriteLine("Closing client");
        }
    }

    internal static void Main(string[] args)
    {
        IPAddress address = IPAddress.Parse("127.0.0.1");

        TcpListener server = new TcpListener(new IPEndPoint(address, 8086));
        server.Start();

        using (Task task2 = new Task(tcpClientConnection))
        {
            task2.Start();

            using (TcpClient client = server.AcceptTcpClient())
            {
                using (NetworkStream ns = client.GetStream())
                {
                    using (MemoryStream ms = new MemoryStream())
                    {
                        ns.CopyTo(ms);
                        byte[] data = ms.ToArray();

                        Console.WriteLine(System.Text.Encoding.ASCII.GetString(data));
                    }
                }
            }

            Console.WriteLine("Server stop");
            Console.ReadKey();

            server.Stop();
        }

        Console.WriteLine("END");
        Console.ReadKey();

    }
}

请注意,我已经查看了类似问题中提供的解决方案,但还没有看到问题所在...

usr

对于TcpClient,请不要指定本地端点。我认为这可以解决问题,并且您不应该这样做,因为它无法完成任何工作。为传出连接指定本地端点会使操作系统选择适当的可用值。通常,所有程序的99.9%都在这样做。

一些程序需要指定本地终结点,以便仅侦听某些IP或接口。看来您不需要。

如果所有连接都已关闭,是否不能继续使用相同的地址和端口?

TCP具有一些不直观的行为,导致连接关闭后会挂起一会儿。通过让操作系统为您选择一个新端口,可以缓解该问题。

您可能还想研究并使用Task一些最佳实践:使用Task.Run和不处置。没有用。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

TcpClient 套接字中的错误处理

来自分类Dev

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

来自分类Dev

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

来自分类Dev

TcpClient等效于套接字关闭发送或接收

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

关闭套接字上的C#TcpClient WriteAsync不会引发异常

来自分类Dev

套接字异常

来自分类Dev

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

来自分类Dev

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

来自分类Dev

在tcpclient套接字上收到字符串的C#问题

来自分类Dev

套接字异常的异常处理

来自分类Dev

动态IP地址的套接字

来自分类Dev

如何使用Tcpclient从另一个类向所有连接的套接字连接发送数据

来自分类Dev

Python套接字连接异常

来自分类Dev

Android套接字编程异常

来自分类Dev

Android套接字原理与异常

来自分类Dev

套接字异常:连接重置

来自分类Dev

套接字,轮询,无套接字结果?

来自分类Dev

MySQL库套接字与运行套接字

来自分类Dev

套接字,轮询,无套接字结果?

来自分类Dev

通过TcpClient将C#服务器程序中的位图传输到Java套接字已损坏

来自分类Dev

Python套接字编程:异常后为“地址已在使用中”

Related 相关文章

  1. 1

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

  2. 2

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

  3. 3

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

  4. 4

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

  5. 5

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

  6. 6

    TcpClient 套接字中的错误处理

  7. 7

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

  8. 8

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

  9. 9

    TcpClient等效于套接字关闭发送或接收

  10. 10

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

  11. 11

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

  12. 12

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

  13. 13

    关闭套接字上的C#TcpClient WriteAsync不会引发异常

  14. 14

    套接字异常

  15. 15

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

  16. 16

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

  17. 17

    在tcpclient套接字上收到字符串的C#问题

  18. 18

    套接字异常的异常处理

  19. 19

    动态IP地址的套接字

  20. 20

    如何使用Tcpclient从另一个类向所有连接的套接字连接发送数据

  21. 21

    Python套接字连接异常

  22. 22

    Android套接字编程异常

  23. 23

    Android套接字原理与异常

  24. 24

    套接字异常:连接重置

  25. 25

    套接字,轮询,无套接字结果?

  26. 26

    MySQL库套接字与运行套接字

  27. 27

    套接字,轮询,无套接字结果?

  28. 28

    通过TcpClient将C#服务器程序中的位图传输到Java套接字已损坏

  29. 29

    Python套接字编程:异常后为“地址已在使用中”

热门标签

归档