码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-04-22 19:28:48      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:col   ret   connect   exce   network   bytes   ipaddr   object   协议   

建立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服务器

标签:col   ret   connect   exce   network   bytes   ipaddr   object   协议   

原文地址:https://www.cnblogs.com/BlueKeyMsg/p/12754858.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!