#c# #sockets
Вопрос:
Можно ли создать обработчик событий, который запускается, когда сокет получает новые данные, аналогично
*_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
метод, доступный с последовательными портами?
Комментарии:
1. Да, найдите сервер асинхронных сокетов, и вы найдете множество примеров.
Ответ №1:
ДА.
Взгляните на SuperSimpleTcp.
Он может даже делать то, что вы хотите, из коробки.
void Main(string[] args)
{
// instantiate
SimpleTcpServer server = new SimpleTcpServer("127.0.0.1:9000");
// set events
server.Events.ClientConnected = ClientConnected;
server.Events.ClientDisconnected = ClientDisconnected;
server.Events.DataReceived = DataReceived;
// let's go!
server.Start();
// once a client has connected...
server.Send("[ClientIp:Port]", "Hello, world!");
Console.ReadKey();
}
static void ClientConnected(object sender, ClientConnectedEventArgs e)
{
Console.WriteLine("[" e.IpPort "] client connected");
}
static void ClientDisconnected(object sender, ClientDisconnectedEventArgs e)
{
Console.WriteLine("[" e.IpPort "] client disconnected: " e.Reason.ToString());
}
static void DataReceived(object sender, DataReceivedEventArgs e)
{
Console.WriteLine("[" e.IpPort "]: "
Encoding.UTF8.GetString(e.Data));
}