Tag: 聊天

C#异步服务器/客户端体系结构

堆叠溢出的第一篇文章! 无论如何……我正在尝试在业余时间自学网络编程,但我已经陷入困境,我无法绕过头脑。 在使用同步网络方法几天后,我决定制作一个客户端/服务器程序,该程序可以: 处理多个并发连接 处理多个通信流 有真正的双向沟通 在更一般的层面上,我想制作一个聊天程序。 多个客户端连接到服务器,可以单独发送和接收数据而没有任何问题……但是服务器也可以将数据从每个客户端发送给其他客户端。 现在我还没有达到目标,所以我在这里寻求一点指导。 我似乎无法使我的循环正常工作,我确信它与代码的异步性质有关……无论出于何种原因,我似乎无法弄清楚什么是错误的。 这是代码块: Server.cs using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; // State object for reading client data asynchronously public class StateObject { // Client socket. public Socket workSocket = null; // Size of receive buffer. public const int BufferSize = 1024; // Receive […]

异步聊天服务器缓冲区问题

有人可以帮我解决这个问题……我一整天都在苦苦挣扎。 所以我正在尝试学习Async套接字,这是给我带来麻烦的东西。 问题基本上就是我与加入聊天室名称的人一起更新ListBox的方式: 基本上我正在做的是让每个客户端在加入服务器时发送“!! addlist [nickname]” 。 它并不理想,因为它不检查重复等,但现在我只想知道为什么它不起作用。 每当有人添加他们以前从未见过的名字时,他们也会发送“!! addlist [nick]” 这样,每次有人加入时,都应该为每个人更新列表。 问题似乎是所有客户端同时开始通信并且它会干扰缓冲区。 我已经尝试为每个客户端使用一个单独的缓冲区,所以这不是问题。 我尝试过使用lock(),但这似乎也没有用。 基本上发生的事情是缓冲区似乎被截断; 哪里有来自同一缓冲区中两个不同人的数据。 请告诉我我在缓冲区或客户端的错误: 请注意,异步套接字使用的是Send而不是BeginSend。 我已经尝试了两种方法,但它们遇到了同样的问题…所以它可能是客户端的? public partial class Login : Form { private ChatWindow cw; private Socket serverSocket; private List socketList; private byte[] buffer; private bool isHost; private bool isClosing; public void startListening() { try { this.isHost = true; //We’re […]

Web聊天应用程序 – ASP.NET/Jabber/Ajax/WCF/Comet/ReverseAjax – 面临的问题 – 寻求见解

过去三周我一直在尝试构建一个基于Web的聊天应用程序,我正面临着构建它所采用的任何路径(编程技术/技术)的问题。 我已经解释了我在下面的所有问题中遇到的问题。 请提供您对此的任何见解。 ASP.NET,AJAX 第一个问题是它不是真正的实时 如果客户端每x秒(常量时间戳)点击聊天服务器,那么除非x非常小,否则它不会是实时的 如果x非常小,如1秒,如果同时有1000个在线用户,我认为它真的会破坏聊天服务器并导致可扩展性/性能问题 WCF双工 遗憾的是,我在此尝试构建WCF双工服务时浪费了相当多的时间,该服务维护所有客户端并在需要时通过通道调用客户端。 但我最近了解到 WCF双工回调不适用于ASP.NET(因为http是请求和响应类型)。 我正在关注这篇伟大的文章来构建一个双工服务。 Comet / ReverseAjax / HTTP Server推送 我对这种技术非常陌生,并且想知道它能够扩展得多好。 在我第一次看到这个编程技术在wiki和关于Comet by Alex的第一篇文章后,我了解到客户端始终保持与服务器的开放连接(长期生活ajax调用),服务器可以使用它来推送“在服务器中发生的有趣事件”到浏览器(客户端)。 那么它的规模有多大? 如果IIS中的开放连接的最大数量超过此类或任何其他问题,该怎么办? Jabber服务器/客户端(XMPP) 我看到大多数可以在网上看到的着名聊天应用程序都在使用Jabber。 我还了解到从头开始编写Jabber服务器是一项繁琐的工作。 我有应用程序的单独的用户配置文件存储。 我可以轻松地将它与Jabber集成吗? 我可以私下托管的任何开源Jabber服务器? (我见过很多开源工具来轻松构建客户端) 提供的任何见解都非常感谢。 谢谢 NLV

ASP.NET高效聊天应用程序方法

我有与SQL SERVER 2005/2008连接的ASP.NET 4 Web应用程序 我想为我的应用程序用户添加“聊天”function。 假设该function将从头开始构建,那么最有效的合理方法是什么: 每隔3秒使用带有Javascript计时器的WCF Web服务 每隔3秒使用带有javascript计时器的ASMX Web服务 使用ASP.NET中的AJAX控件(更新面板)并根据ASP.NET计时器(服务器端)每3秒进行一次部分回发。 从数据库向应用程序发送请求,告诉他在有新消息时刷新自己(我不知道这种方法,但我认为技术存在,但我甚至不知道它的名字) 一些JQuery AJAX技术,它们不在Microsoft AJAX .NET Framework中。 这些技术应该能够与SQL Server通信并与ASP.NET兼容(非PHP)。 我不确定这种方法。 任何其他方法或意见。 假设将根据先前实现的库构建该function。 什么是可能完全定制的库,因此很可能是开源的。 如果库将节省25%的工作时间,那将是很好的,但我不能使用隐藏代码(盲目DLL),如果它非常关键,即使它节省了80%的工作时间。 谢谢,

使用高质量video流开发video聊天应用程序

我在一家公司工作,我们正在开发现有应用程序的video聊天支持。 我已经看过各种解决方案了 使用Managed Direct节目在C#中进行video捕获和流式传输 在代码项目中的一些代码示例我们拍摄图像并通过网络传递(我称之为粗略的解决方案,因为这会占用大量带宽。 从头开始编写压缩算法并使用它来压缩 – 解压缩video。 现在的挑战是我们希望实现非常高质量的video流,并且容器应用程序使用C#.NET编码 这是我到目前为止提出的。 流数据的网络逻辑用C#编写,video压缩用VC ++编写,并尽可能使用pinvoke或CLI调用VC ++ dll。 我正在寻找一个在这个领域更有经验的人,他可以建议我,如果我正确或者仍然可以改进。 最终目标是高质量的video流。 编解码器可以是h.2633,h.264等任何东西。

C#multithreading聊天服务器,手柄断开连接

我正在寻找一种处理断开连接的方法,因为每次关闭客户端时,服务器都会停止工作。 我收到一条错误消息,它在此行中“无法读取超出流的末尾”: string message = reader.ReadString(); 此外,我需要一种方法来从客户端列表中删除断开连接的客户端。 这是我的代码:服务器 using System; using System.Threading; using System.Net.Sockets; using System.IO; using System.Net; using System.Collections.Generic; namespace Server { class Server { public static List clients = new List(); static void Main(string[] args) { IPAddress ip = IPAddress.Parse(“127.0.0.1”); TcpListener ServerSocket = new TcpListener(ip, 14000); ServerSocket.Start(); Console.WriteLine(“Server started.”); while (true) { TcpClient […]