语音和文本会议库





5.00/5 (11投票s)
用于创建语音和文本会议应用程序的库。

引言
这个库是我大四项目的一部分。我在网上搜索了大量关于C#语音会议的内容,但找不到任何有用的东西,于是我决定修改我在CodeProject上找到的名为“A Voice Chat Application in C#”的点对点语音聊天代码,使其成为语音会议。它还包含文本会议功能,可以帮助程序员构建会议软件。
语音会议基于客户端-服务器架构。语音会议服务器使用两个服务器:一个用于管理客户端(例如,添加和移除客户端),另一个用于处理通信。语音会议客户端也使用两个客户端:一个用于进入和退出,另一个用于通信。文本会议也使用客户端/服务器架构。文本会议服务器利用一个TCP服务器,文本会议客户端基于一个TCP客户端。
这个会议库的主要特点是它提供了会议工作的完整实现。程序员只需在代码中使用其预定义的函数和事件。
Using the Code
语音会议
VoiceConferencingServer 类在服务器端处理所有与语音聊天相关的工作。它的构造函数接受三个参数:
public VoiceConferencingServer(String Name,int HandlingPort,int CommunicationPort)
- 服务器名称 (
String
) - 处理端口(此端口用于处理语音聊天服务器中客户端的进入和退出)
- 通信端口(所有语音通信都通过此端口进行)
VoiceConferencingServer 类包含两个与用户处理相关的事件和四个与语音会议相关的函数。
interface VoiceConferencingServer {
//User Handling Events
event VoiceChatServer.UserAddedEventHandler ClientAdded;
event VoiceChatServer.UserRemovedEventHandler ClientRemoved;
//Methods
void InitializeCall(object sender);
void UninitializeCall(); void Mute();
void Unmute();
}
ClientAdded 事件 当新客户端登录语音服务器时引发。它使用 UserArgs
类作为参数。
ClientRemoved 事件 当新客户端登出语音服务器时引发。它使用 UserArgs
类作为参数。
InitializeCall 函数 接受一个参数“Form control”。此函数启动用户处理和语音通信服务器。
UninitializeCall 函数 释放服务器并终止客户端和服务器之间的所有通信。
Mute 函数 用于静音服务器语音。
Unmute 函数 用于取消静音服务器语音。
VoiceConferencingClient 类在客户端处理所有与语音会议相关的工作。它的构造函数接受四个参数:
public VoiceConferencingClient
(String _ServerIP,String Name,int HandlingPort,int CommuncationPort)
_ServerIP
(服务器IP地址)Name
(客户端名称)- 处理端口(此端口用于在
VoiceConferencingClient
中处理登录和登出过程) - 通信端口(所有语音通信都通过此端口进行)
VoiceConferencingClient 类包含四个与语音会议相关的函数。
interface VoiceConferencingClient {
void InitializeCall(object sender);
void UninitializeCall();
void Mute();
void Unmute();
}
InitializeCall 函数 连接到服务器并启动客户端和服务器之间的语音会议。
UninitializeCall 函数 释放客户端并终止客户端和服务器之间的所有通信。
Mute 函数 用于静音客户端语音。
Unmute 函数 用于取消静音客户端语音。
文本会议
TextConferencingServer 类在服务器端处理所有与文本会议相关的工作。它的构造函数接受两个参数:
public TextConferencingServer(int Port,String Name)
Port
(用于处理会议工作)Name
(服务器名称)
TextConferencingServer 类包含三个事件和两个函数。
interface ITextConferencingServer{
//Events
event TextConferencingServer.ClientAddedEventHandler ClientAdded;
event TextConferencingServer.ClientRemovedEventHandler ClientRemoved;
event TextConferencingServer.MessageEventHandler MessageRecieved;
//Methods
void SendMessage(string mess, string reciever);
void BroadcastMessage(byte[] message);
}
ClientAdded 事件 当新客户端登录语音服务器时引发。它使用 UserArgs
类作为参数。
ClientRemoved 事件 当新客户端登出语音服务器时引发。它使用 UserArgs
类作为参数。
MessageRecieved 事件 当服务器收到消息时引发。它使用 MessageArgs
类作为参数。
SendMessage 函数 接受两个参数:您要发送的消息,以及您要发送到的客户端名称。
BroadcastMessage 函数 接受一个参数:您要广播给所有连接用户消息。
TextConferencingClient 类处理客户端所有与文本会议相关的工作。它的构造函数接受两个参数:
public TextConferencingClient(String ServIP,int Port, String Name)
ServIP
(服务器IP地址)Port
(用于处理会议工作)Name
(客户端名称,应唯一)
TextConferencingClient 类包含三个事件和一个函数。
interface ITextConferencingClient{
//Events
event TextConferencingClient.MessageEventHandler MessageRecieved;
event TextConferencingClient.UserAddedEventHandler UserAdded;
event TextConferencingClient.UserRemovedEventHandler UserRemoved;
//Methods
void sendMessage(string message, string Reciever);
}
ClientAdded 事件 当新客户端登录语音服务器时引发。它使用 UserArgs
类作为参数。
ClientRemoved 事件 当新客户端登出语音服务器时引发。它使用 UserArgs
类作为参数。
MessageRecieved 事件 当服务器收到消息时引发。它使用 MessageArgs
类作为参数。
SendMessage 函数 接受两个参数:您要发送的消息,以及您要发送到的客户端名称。
先决条件
您需要在PC上安装DirectX,因为此库使用DirectX捕获声音,并且您还需要将DirectX的DLL添加到您的项目中。您可以从Microsoft网站下载。
参考文献
未来工作
我正在从事网络摄像头会议和远程桌面工作,希望很快就能在CodeProject上发布。
历史
- 2010年2月15日:初次发布