1、引入依赖库,无需第三方。
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Windows.Forms;
2、变量声明
private byte[] result = new byte[1024];
private int maxClientCount;
private string ip;
private int port;
private List<Socket> ClientSockets;
private IPEndPoint ipEndPoint;
private Socket ServerSocket;
private Socket ClientSocket;
3、开启TCP服务
ip = IPAddress.Any.ToString();
port=8640;
maxClientCount = 256;
ClientSockets = new List<Socket>();
ipEndPoint = new IPEndPoint(IPAddress.Any, port);
ServerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
ServerSocket.Bind(this.ipEndPoint);
ServerSocket.Listen(maxClientCount);
Thread ServerThread = new Thread(() =>
{
ListenClientConnect();
})
{
IsBackground = true,
};
ServerThread.Start();
4、TCP连接侦听
private void ListenClientConnect()
{
while (true)
{
try
{
ClientSocket = ServerSocket.Accept();
ClientSockets.Add(ClientSocket);
Thread ReveiveThread = new Thread(() =>
{
ReceiveClient(ClientSocket);
})
{
IsBackground = true,
};
ReveiveThread.Start();
}
catch (Exception ex)
{
}
}
}
5、数据接收
private void ReceiveClient(object obj)
{
Socket _ClientSocket = (Socket)obj;
while (true)
{
try
{
int receiveLength = _ClientSocket.Receive(result);
string strData = Encoding.UTF8.GetString(result, 0, receiveLength);
}
catch (Exception e)
{
this.ClientSockets.Remove(_ClientSocket);
_ClientSocket.Shutdown(SocketShutdown.Both);
_ClientSocket.Close();
break;
}
}
}
转载请注明原文地址:https://ipadbbs.8miu.com/read-65609.html