【发布时间】:2021-11-22 09:46:55
【问题描述】:
是否可以创建一个在socket接收到新数据时触发的事件处理程序,类似于
*_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
串行端口可用的方法?
【问题讨论】:
-
是的,搜索Async Socket Server,你会发现很多例子。
是否可以创建一个在socket接收到新数据时触发的事件处理程序,类似于
*_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
串行端口可用的方法?
【问题讨论】:
是的。
它甚至可以做你想做的事情。
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));
}
【讨论】: