服务器端
1、定义全局变量套接字和创建负责监听连接的线程
//创建套接字
Socket socket = null;
//创建负责监听客户端连接的线程;
Thread threadListen = null;
2、创建套接字socket,开启服务Bind,开启新线程ListenConnecting进行监听客户端的连接
private void btn_StartServer_Click(object sender, EventArgs e)
{
//创建负责监听的套接字
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress address = IPAddress.Parse(this.txt_IP.Text.Trim());
//根据ipaddress 以及端口号创建ipe对象
IPEndPoint endPoint = new IPEndPoint(address, int.Parse(this.txt_Port.Text.Trim()));
try
{
socket.Bind(endPoint);
Invoke(myRecMsg, "开启服务成功!");
}
catch (Exception ex)
{
MessageBox.Show($"开启服务失败{ex.Message },打开服务");
return;
}
socket.Listen(10);
threadListen = new Thread(ListenConnecting);
threadListen.IsBackground = true;
threadListen.Start();
this.btn_StartServer.Enabled = false;
}
3、监听事件,把连接到客户端加入字典DicSocket中,启用新线程ReceiveMsg进行接收数据传递
//创建URL与Socket的这典集合
Dictionary<string, Socket> DicSockt = new Dictionary<string, Socket>();
private void ListenConnecting()
{
while (true)
{
//一旦监听到一个客户端的连接,将会创建一个客户
Socket socketClinet = socket.Accept();
string client = socketCl