如何将 SimplSockets 与委托一起用于“hello world”项目?

Posted

技术标签:

【中文标题】如何将 SimplSockets 与委托一起用于“hello world”项目?【英文标题】:How do I use SimplSockets with a delegate for a "hello world" project? 【发布时间】:2014-09-25 02:04:59 【问题描述】:

我正在研究 SimplSockets 库以构建使用套接字的应用程序。但是,在检查了other questions on Stack Overflow、the author’s blog、the source 和几次 Internet 搜索后,我找不到使用 SimplSockets 创建“hello world”项目的直接方法。

如何创建使用 SimplSockets 的“hello world”应用程序?

为了防止“过于宽泛”的关闭,我要做的就是发送和接收一些数据。一个字符串,随便。我打开这个问题的原因是因为我不确定如何调用构造函数,因为它使用func<T>,其中T 是一个套接字。

【问题讨论】:

正如所言,这个问题对于 SO 来说是题外话。软件/教程的建议......等 @paqogomez:你可能已经对“样本”这个词产生了这种印象;但是,如果您将“示例”替换为询问如何,那么这个问题同样有效。做出这样的调整后,它可能仍然过于宽泛,但肯定不是对场外资源的请求。 @paqogomez -- 对我来说,您的评论绝对有道理。 OP 不是“要求软件或教程”。 makerofthings7 - 好问题,谢谢。 @JoeBlow,检查问题的编辑历史。当 paqogomez 写下他/她的答案时,问题听起来已经大不相同了。 谢谢@ebb,是的,这个问题与第一个版本非常不同,因此使用了“Asphed”短语。我确信作为一个 9k 用户,制造商可以把它带到身边。我撤回了我的近距离投票。很高兴能够向 meta 寻求帮助,这似乎为他赢得了 85 分。 【参考方案1】:

我在使用 SimplSockets 时遇到的问题是我没有正确理解如何使用构造函数中所需的委托。

下面是一个示例客户端/服务器,它会向您回显输入的数据。我不知道我应该做什么来代替Thread.Sleep(),所以除非有人有更好的建议,否则我会把它留在那里。

private static void ConnectUsingSimpleSockets()

    int maxClients = 50;
    int maxPeers = 10;

    var socketCreator = () => new System.Net.Sockets.Socket(SocketType.Stream, ProtocolType.Tcp);

    using (var client = new SimplSockets.SimplSocket(socketCreator, 5000, 10, true))
    
        client.MessageReceived += client_MessageReceived;
        client.Error += client_Error;

        var ss = new System.Net.IPEndPoint(BitConverter.ToInt32(IPAddress.Parse("127.0.0.1").GetAddressBytes(), 0), 4747);
        if (client.Connect(ss))
        
            Console.WriteLine("type something..");
            while (true)
            
                string resul = Console.ReadLine();

                byte[] data = client.SendReceive(UTF8Encoding.UTF8.GetBytes("Client Send: " + resul + DateTime.Now));

                if (data == UTF8Encoding.UTF8.GetBytes("END"))
                
                    break;
                
                Console.WriteLine(UTF8Encoding.UTF8.GetString(data));

            
        
        client.Close();


        client.Listen(ss);
        while (true)
        
            Console.WriteLine("sleeping");
            Thread.Sleep(7000);
        
        client.Close();
    

【讨论】:

原谅我的无知... client.MessageReceived += client_MessageReceived 添加了 SimplSocket 构造函数不会接受的委托? 我觉得应该是BitConverter.ToInt64

以上是关于如何将 SimplSockets 与委托一起用于“hello world”项目?的主要内容,如果未能解决你的问题,请参考以下文章

Swinject:如何将委托模式与接口隔离(类与接口)一起使用?

如何将代表与 NSKeyedUnarchiver 一起使用?

将 Func 委托与 Async 方法一起使用

将委托与消息一起使用

将 Kotlin 属性委托与 by 一起使用时出现 NullPointerException (NPE)

如何将 UIPageControl 与 iCarousel 一起使用?