利用TCP服务器接收多客户端的音频数据,通过Naudio进行播放及音频处理TCP服务器

Posted bluekeymsg

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用TCP服务器接收多客户端的音频数据,通过Naudio进行播放及音频处理TCP服务器相关的知识,希望对你有一定的参考价值。

建立tcp服务器
1.开启服务

// 创建负责监听的套接字,注意其中的参数;
Socket Listensocket= new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// 获得文本框中的IP对象;
IPAddress address = IPAddress.Parse("127.0.0.1");
// 创建包含ip和端口号的网络节点对象;
IPEndPoint endPoint = new IPEndPoint(address, int.Parse("8000"));
// 将负责监听的套接字绑定到唯一的ip和端口上;
Listensocket.Bind(endPoint);
// 设置监听队列的长度;
Listensocket.Listen(200);

// 创建负责监听的线程;
Thread threadWatch = new Thread(ListenConnecting);
//是否为后台线程
Thread threadWatch.IsBackground = true;
//线程开始
Thread threadWatch.Start();

2.监听线程


/// <summary>
/// 存放申请连接的客户端
/// </summary>
public static Socket[] Clientsocket = new Socket[200];

public static void ListenConnecting()
{
// 持续不断的监听客户端的连接请求;
while (true)
{
//请求的连接,为阻塞的模式,无请求一直阻塞线程
Socket sokConnection = Listensocket.Accept();
//存入数组
for(int i=0;i<Clientsocket.length;i++){
if(Clientsocket[i]==null){
Clientsocket[i]=sokConnection;
break;
}
}
//建立接收数据的线程
Thread thread = new Thread(RecMsg);
thread.IsBackground = true;
//传入Socket对象
thread.Start(sokConnection);
}
}

3.接收数据线程

/// <summary>
/// 接收数据
/// </summary>
/// <param name="sokConnectionparn"></param>
public static void RecMsg(object sokConnectionparn)
{
//实例化Socket对象
Socket sokClient = sokConnectionparn;
//定义接收数组
byte[] arrMsgRec = new byte[128];
while (true)
{
try
{
//接收客户端数据
int lengths = sokClient.Receive(arrMsgRec);
}
catch (SocketException ex)
{
//一方断开连接
break;
}
if(lengths>0){
//做数据处理
}
else {
//没有任何数据
}
}
}

4.发送数据

/// <summary>
/// 发送指令
/// </summary>
/// <param name="strMsg"></param>
/// <param name="socket"></param>
/// <returns></returns>
public static bool SendData(string strMsg, Socket socket)
{
// 将要发送的字符串转换成Utf-8字节数组;
byte[] arrMsg = System.Text.Encoding.UTF8.GetBytes(strMsg);
try
{
socket.Send(arrMsg);
return true;
}
catch (Exception see)
{
return false;
}
}

5.关闭TCP服务

/// <summary>
/// 关闭TCP服务
/// </summary>
/// <param name="sokClient"></param>
public static void CloseTCPserver(Socket sokClient)
{
sokClient.Shutdown(SocketShutdown.Both);
sokClient.Close();
}
————————————————
版权声明:本文为CSDN博主「阿旺呀」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_46783424/article/details/105681335

以上是关于利用TCP服务器接收多客户端的音频数据,通过Naudio进行播放及音频处理TCP服务器的主要内容,如果未能解决你的问题,请参考以下文章

linux C语言 TCP 多线程 简易聊天室

tcp协议详解(四

LabVIEW中利用TCP进行网络通信,客户端和服务器连接出现问题

TCP 客户端连接

.net c# 在网页上客户端如何播放服务器端的wav音频文件 急急急!!!!!!!

Java Socket实现基于TCP和UDP多线程通信