服务器接收多个客户端信息
服务端
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace ConsoleApplication1
{
class Program
{
public static string serverIp = "127.0.0.1";
public static int serverPort = 8081;
public static Thread serverThread;
public static Socket serverSocket;
public static byte[] result = new byte[1024];
static void Main(string[] args)
{
try
{
IPAddress serverIpAddress = IPAddress.Parse(serverIp);
IPEndPoint serverIpn = new IPEndPoint(serverIpAddress, serverPort);
serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
serverSocket.Bind(serverIpn);
serverSocket.Listen(10);
Console.WriteLine("服务启动成功");
serverThread = new Thread(new ThreadStart(listenClientConnect));
serverThread.Start();
}
catch (Exception e)
{
Console.WriteLine("服务启动失败:"+e.Message);
serverSocket.Dispose();
serverSocket.Close();
}
}
public static void listenClientConnect()
{
while (true)
{
try
{
Socket clientSocket = serverSocket.Accept();
clientSocket.Send(Encoding.UTF8.GetBytes("来自服务端的信息"));
Thread clientThread = new Thread(receiveClientMsg);
clientThread.Start(clientSocket);
}
catch (Exception e)
{
Console.WriteLine("出错了:" + e.Message);
}
}
}
public static void receiveClientMsg(Object clientSocket){
try
{
while (true)
{
Socket socket = (Socket)clientSocket;
int msgLen = socket.Receive(result);
Console.WriteLine("客户端发来的信息是:{0}", Encoding.UTF8.GetString(result));
}
}
catch (Exception e)
{
}
}
}
}
客户端
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace ConsoleApplication1
{
class Program
{
public static string serverIp = "127.0.0.1";
public static int serverPort = 8081;
public static Thread serverThread;
public static Socket serverSocket;
public static byte[] result = new byte[1024];
static void Main(string[] args)
{
try
{
IPAddress serverIpAddress = IPAddress.Parse(serverIp);
IPEndPoint serverIpn = new IPEndPoint(serverIpAddress, serverPort);
serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
serverSocket.Bind(serverIpn);
serverSocket.Listen(10);
Console.WriteLine("服务启动成功");
serverThread = new Thread(new ThreadStart(listenClientConnect));
serverThread.Start();
}
catch (Exception e)
{
Console.WriteLine("服务启动失败:"+e.Message);
serverSocket.Dispose();
serverSocket.Close();
}
}
public static void listenClientConnect()
{
while (true)
{
try
{
Socket clientSocket = serverSocket.Accept();
clientSocket.Send(Encoding.UTF8.GetBytes("来自服务端的信息"));
Thread clientThread = new Thread(receiveClientMsg);
clientThread.Start(clientSocket);
}
catch (Exception e)
{
Console.WriteLine("出错了:" + e.Message);
}
}
}
public static void receiveClientMsg(Object clientSocket){
try
{
while (true)
{
Socket socket = (Socket)clientSocket;
int msgLen = socket.Receive(result);
Console.WriteLine("客户端发来的信息是:{0}", Encoding.UTF8.GetString(result));
}
}
catch (Exception e)
{
}
}
}
}
线程池使用
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace ConsoleApplication1
{
class Program
{
public static string serverIp = "127.0.0.1";
public static int serverPort = 8081;
public static Thread serverThread;
public static Socket serverSocket;
public static byte[] result = new byte[1024];
static void Main(string[] args)
{
try
{
IPAddress serverIpAddress = IPAddress.Parse(serverIp);
IPEndPoint serverIpn = new IPEndPoint(serverIpAddress, serverPort);
serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
serverSocket.Bind(serverIpn);
serverSocket.Listen(10);
Console.WriteLine("服务启动成功");
serverThread = new Thread(new ThreadStart(listenClientConnect));
serverThread.Start();
}
catch (Exception e)
{
Console.WriteLine("服务启动失败:"+e.Message);
serverSocket.Dispose();
serverSocket.Close();
}
}
public static void listenClientConnect()
{
while (true)
{
try
{
Socket clientSocket = serverSocket.Accept();
clientSocket.Send(Encoding.UTF8.GetBytes("来自服务端的信息"));
ThreadPool.QueueUserWorkItem(new WaitCallback(receiveClientMsg), clientSocket);
}
catch (Exception e)
{
Console.WriteLine("出错了:" + e.Message);
}
}
}
public static void receiveClientMsg(Object clientSocket){
try
{
while (true)
{
Socket socket = (Socket)clientSocket;
int msgLen = socket.Receive(result);
Console.WriteLine("客户端发来的信息是:{0}", Encoding.UTF8.GetString(result));
}
}
catch (Exception e)
{
}
}
}
}