首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >异步通信

异步通信
EN

Stack Overflow用户
提问于 2014-02-14 11:22:36
回答 1查看 191关注 0票数 0

我看到了一个关于如何制作C#中的异步通信的教程

但是我只能一对一的聊天,我想知道怎么和多台电脑聊天,

我可以在不使用服务器的情况下存档吗?我不知道该怎么做,因为我是C#的新手。

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-15 12:39:25

我想你被“服务器”这个词搞错了。服务请求的不是web服务器,而是顺序计算机(甚至是应用程序)。因此,对于您的多用户聊天,您需要创建2种应用程序-服务器和客户端。服务器将监听客户端并回复它们。通常,只有一个服务器和许多客户端。我建议您开始编写简单的服务器/客户端程序,然后改进它们。创建服务器,这将只为一个用户在时间。它将监听本地IP上的特定端口。我使用任务来简化程序。

代码语言:javascript
复制
        byte[] ba = new byte[1024];
        new Task(() => {
            Output("Going to listen to messages...");
            Socket listeningS = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            // Listening to local address. You should listen to external IP for real server
            IPEndPoint ep = new IPEndPoint(IPAddress.Any, port);
            listeningS.Bind((EndPoint)ep);
            // One and only client at a time :)
            listeningS.Listen(1);
            while (isRunning)
            {
                // Accept client, receive data and send it back
                Socket clientS = listeningS.Accept();
                int total = clientS.Receive(ba, 0, ba.Length, SocketFlags.None);
                total = clientS.Send(ba, 0, total, SocketFlags.None);
                // Client will open new connection (but later it is possible to use same)
                clientS.Shutdown(SocketShutdown.Both);
                clientS.Close();

            }
        }).Start();

然后从客户端应用程序开始--这是最简单的部分--只需连接、发送和接收数据。

代码语言:javascript
复制
    byte[] ba = Encoding.UTF8.GetBytes(message);
    Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    s.Connect(IPAddress.Loopback, port);
    total = s.Send(ba, SocketFlags.None);
    total = s.Receive(ba, 0, ba.Length, SocketFlags.None);
    if (total > 0)
    {
        Output(Encoding.UTF8.GetString(ba, 0, total));
    }

接下来要做的是为服务器实现线程/异步:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21778031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档