using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net.Sockets;
using System.Net;
namespace soketSever
{
class Program
{
static List<Client> clientList = new List<Client>();
public static void BroadcastMessage(string str)
{
var notConnectedList = new List<Client>();
foreach (Client item in clientList)
{
if (item.Connected)
{
item.SendMessage(str);
}
else
{
notConnectedList.Add(item);
}
}
foreach (var item in notConnectedList)
{
clientList.Remove(item);
}
}
static void Main(string[] args)
{
Socket listenerSoket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress ip=IPAddress.Parse("192.168.2.100");
IPEndPoint point = new IPEndPoint(ip, 7788);
listenerSoket.Bind(point);
listenerSoket.Listen(100);
while (true)
{
Socket socket = listenerSoket.Accept();
Console.WriteLine("有一个客户端连接了");
Client client = new Client(socket); //写与客服端通信的逻辑
clientList.Add(client);
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace soketSever
{
class Client
{
private Thread t;
private Socket socket;
private byte[] date = new byte[1024];
public Client(Socket s)
{
socket = s;
t = new Thread(ReceiveMessage);
t.Start();
}
void ReceiveMessage()
{
while (true)
{
if (socket.Poll(10, SelectMode.SelectRead))
{
socket.Close();
break;
}
int length = socket.Receive(date);
string str= Encoding.UTF8.GetString(date, 0, length);
Program.BroadcastMessage(str);
Console.WriteLine("收到消息:"+str);
}
}
public void SendMessage(string str)
{
byte[] date = Encoding.UTF8.GetBytes(str);
socket.Send(date);
}
public bool Connected
{
get { return socket.Connected; }
}
}
}