【问题标题】:Server Socket cannot accepts client. (C# UWP Async Socket Programming)服务器 Socket 不能接受客户端。 (C# UWP 异步套接字编程)
【发布时间】:2017-11-28 17:03:26
【问题描述】:

我使用 C# Socket 制作了一个异步服务器套接字代码。

虽然我写了一个代码,然后测试到控制台环境,

它工作正常,但我在 UWP 测试了该代码。

但是,它不起作用。不能接受客户。

Bind、Listen、Accept都没有错误,但是这个socket代码不能接受客户端!

我该如何解决??请帮帮我..

    private Socket m_ServerSocket;
    private List<Socket> m_ClientSocket;

    private int m_iPort = 1123;
    private int m_iClients = 8;
    private int m_iBufferSize = 128;

public bool Open(int IN_iPort, int IN_iClients, int IN_iBufferSize)
    {
        try
        {
            m_iPort = IN_iPort;
            m_iClients = IN_iClients;
            m_iBufferSize = IN_iBufferSize;

            m_ClientSocket = new List<Socket>();

            m_ServerSocket = new Socket(
                                AddressFamily.InterNetwork,
                                SocketType.Stream,
                                ProtocolType.Tcp);

            IPEndPoint ipep = new IPEndPoint(IPAddress.Any, m_iPort);
            m_ServerSocket.Bind(ipep);
            m_ServerSocket.Listen(m_iClients);

            SocketAsyncEventArgs args = new SocketAsyncEventArgs();
            args.Completed
                += new EventHandler<SocketAsyncEventArgs>(Accept_Completed);
            m_ServerSocket.AcceptAsync(args);
        }
        catch (Exception e)
        {
            return false;
        }

        m_bIsOpen = true;
        return true;
    }

    private void Accept_Completed(object sender, SocketAsyncEventArgs e)
    {
        Socket ClientSocket = e.AcceptSocket;
        m_ClientSocket.Add(ClientSocket);

        if (m_ClientSocket != null)
        {
            SocketAsyncEventArgs args = new SocketAsyncEventArgs();
            byte[] szData = new byte[m_iBufferSize];
            args.SetBuffer(szData, 0, m_iBufferSize);
            args.UserToken = m_ClientSocket;
            args.Completed
                += new EventHandler<SocketAsyncEventArgs>(Receive_Completed);
            ClientSocket.ReceiveAsync(args);
        }

        e.AcceptSocket = null;
        m_ServerSocket.AcceptAsync(e);
    }

【问题讨论】:

  • 你检查过 uwp 包清单中的Internet(Clent&amp;Server) 选项吗?
  • 好的,现在我检查了它。我错过了。谢谢!

标签: server uwp


【解决方案1】:

我检查了您的代码,您的代码中似乎没有问题。请检查您是否在项目appxmanifest 中勾选了Internet(Clent&amp;Server)option。更详细的可以参考Sockets官方文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    • 2016-02-09
    • 2018-06-30
    • 1970-01-01
    • 2020-08-27
    相关资源
    最近更新 更多