标签: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