c# socket通讯
我多个客户端与服务端建立连接后,我用某一个客户端给服务端发送信息,在服务端我该如何判断是那个客户端发送的信息呢?
或者是有什么办法在客户端对服务端建立连接时 ,给当前客户端的标识一块传给服务端呢?
socket通讯 多个客户端连接服务端之后如何,服务端给客户端发送信息
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
道法自然0402 2024-09-09 10:19关注在C#中进行Socket通信时,可以通过客户端的IP地址和端口号来标识不同的客户端。当客户端与服务端建立连接后,服务端可以获取客户端的IP地址和端口号,并将其作为标识来区分不同的客户端。
以下是一个简单的示例代码,演示了如何在服务端判断是哪个客户端发送的信息:using System; using System.Net; using System.Net.Sockets; using System.Text; public class Server { private static byte[] buffer = new byte[1024]; private static Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); private static int clientCount = 0; public static void Main(string[] args) { Console.WriteLine("Server started..."); serverSocket.Bind(new IPEndPoint(IPAddress.Any, 8888)); serverSocket.Listen(5); serverSocket.BeginAccept(new AsyncCallback(AcceptCallback), null); Console.ReadLine(); } private static void AcceptCallback(IAsyncResult AR) { Socket socket = serverSocket.EndAccept(AR); clientCount++; Console.WriteLine("Client connected. Total clients: " + clientCount); socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveCallback), socket); serverSocket.BeginAccept(new AsyncCallback(AcceptCallback), null); } private static void ReceiveCallback(IAsyncResult AR) { Socket socket = (Socket)AR.AsyncState; int received = socket.EndReceive(AR); byte[] dataBuf = new byte[received]; Array.Copy(buffer, dataBuf, received); string message = Encoding.ASCII.GetString(dataBuf); Console.WriteLine("Received from client: " + message); // 在这里可以根据客户端的IP地址和端口号来判断是哪个客户端发送的信息 string clientIdentifier = socket.RemoteEndPoint.ToString(); Console.WriteLine("Message from client " + clientIdentifier); socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveCallback), socket); } }解决 无用评论 打赏 举报