服務(wù)端
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SeverTest
{
class Program
{
static void Main(string[] args)
{
SeverControl sever = new SeverControl();
sever.Start();
Console.ReadLine();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace SeverTest
{
class SeverControl
{
private Socket severSocket;
private List<Socket> clients;
public SeverControl()
{
severSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
clients = new List<Socket>();
}
public void Start()
{
severSocket.Bind(new IPEndPoint(IPAddress.Any, 23432));
severSocket.Listen(10);
Console.WriteLine("服務(wù)器啟動成功");
Thread acceptThread = new Thread(Accept);
acceptThread.IsBackground = true;
acceptThread.Start();
}
private void Accept()
{
Socket clientSocket = severSocket.Accept();
IPEndPoint iPEndPoint = clientSocket.RemoteEndPoint as IPEndPoint;
Console.WriteLine(iPEndPoint.Address + "(" + iPEndPoint.Port + ")" + "連接成功");
clients.Add(clientSocket);
Thread receiveThread = new Thread(Receive);
receiveThread.IsBackground = true;
receiveThread.Start(clientSocket);
Accept();
}
private void Receive(object obj)
{
Socket clientSocket = obj as Socket;
IPEndPoint endPoint = clientSocket.RemoteEndPoint as IPEndPoint;
try
{
byte[] buffer = new byte[1024];
int length = clientSocket.Receive(buffer);
string mag = endPoint.Address + "[" + endPoint.Port + "]" + Encoding.UTF8.GetString(buffer, 0, length);
Console.WriteLine(mag);
Broadcast(clientSocket, mag);
//clientSocket.Send(Encoding.UTF8.GetBytes("服務(wù)器收到"));
Receive(clientSocket);
}
catch
{
Console.WriteLine(endPoint.Address + "[" + endPoint.Port + "]" + "斷開連接");
clients.Remove(clientSocket);
}
}
private void Broadcast(Socket otherclient, string mag)
{
foreach (var client in clients)
{
if (client == otherclient)
{
}
else
{
client.Send(Encoding.UTF8.GetBytes(mag));
}
}
}
}
}
客戶端
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ClientTest
{
class Program
{
static void Main(string[] args)
{
ClientControl client = new ClientControl();
client.Connect();
client.Send();
Console.ReadLine();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace ClientTest
{
class ClientControl
{
Socket clientSocket;
public ClientControl()
{
clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
}
public void Connect()
{
clientSocket.Connect("192.168.28.15", 23432);
Console.WriteLine("連接服務(wù)器成功");
Thread receiveThread = new Thread(Receive);
receiveThread.IsBackground = true;
receiveThread.Start();
}
public void Send()
{
Console.WriteLine("請輸入發(fā)送信息仰楚,輸入quit結(jié)束");
string mag = Console.ReadLine();
while (mag != "quit")
{
clientSocket.Send(Encoding.UTF8.GetBytes(mag));
mag = Console.ReadLine();
}
}
private void Receive()
{
try
{
byte[] buffer = new byte[1024];
int length = clientSocket.Receive(buffer);
Console.WriteLine(Encoding.UTF8.GetString(buffer, 0, length));
Receive();
}
catch
{
Console.WriteLine("服務(wù)器拒絕訪問");
}
}
}
}
image.png
image.png