首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

UWP AcceptAsync(SocketAsyncEventArgs e)始终返回true,从不调用SocketAsyncEventArgs.Completed的方法

UWP(Universal Windows Platform)是一种由微软推出的应用程序开发框架,用于创建适用于多种Windows设备的应用程序。UWP提供了一套统一的API,使开发人员能够在不同的设备上构建功能丰富且具有响应性的应用程序。

在UWP中,AcceptAsync(SocketAsyncEventArgs e)是用于异步接受传入的连接请求的方法。它接受一个SocketAsyncEventArgs对象作为参数,并在接受连接请求时返回一个布尔值。根据文档,AcceptAsync方法始终返回true,这意味着它不会阻塞并且总是接受连接请求。

然而,需要注意的是,AcceptAsync方法只负责接受连接请求,而不负责处理连接请求完成后的操作。为了处理连接请求完成后的操作,需要使用SocketAsyncEventArgs.Completed事件。在该事件中,可以通过检查SocketAsyncEventArgs.LastOperation属性来确定操作的类型,并根据需要执行相应的操作。

以下是一个示例代码,演示如何正确使用AcceptAsync方法和SocketAsyncEventArgs.Completed事件:

代码语言:csharp
复制
private Socket listener;

public void StartListening()
{
    // 创建监听Socket
    listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

    // 绑定和监听端口
    listener.Bind(new IPEndPoint(IPAddress.Any, 1234));
    listener.Listen(10);

    // 创建SocketAsyncEventArgs对象
    SocketAsyncEventArgs args = new SocketAsyncEventArgs();
    args.Completed += OnAcceptCompleted;

    // 开始异步接受连接请求
    bool willRaiseEvent = listener.AcceptAsync(args);
    if (!willRaiseEvent)
    {
        // 如果AcceptAsync方法立即返回false,则表示连接请求已完成,需要手动处理
        OnAcceptCompleted(listener, args);
    }
}

private void OnAcceptCompleted(object sender, SocketAsyncEventArgs e)
{
    if (e.SocketError == SocketError.Success)
    {
        // 处理连接请求成功的情况
        // 在这里可以执行接受连接请求后的操作,如处理数据传输等
    }
    else
    {
        // 处理连接请求失败的情况
    }

    // 继续接受下一个连接请求
    e.AcceptSocket = null;
    bool willRaiseEvent = listener.AcceptAsync(e);
    if (!willRaiseEvent)
    {
        // 如果AcceptAsync方法立即返回false,则表示连接请求已完成,需要手动处理
        OnAcceptCompleted(listener, e);
    }
}

在上述示例中,我们创建了一个Socket对象作为监听Socket,并使用AcceptAsync方法开始异步接受连接请求。在OnAcceptCompleted方法中,我们处理了连接请求完成后的情况,并继续接受下一个连接请求。

对于UWP开发中的网络通信,腾讯云提供了一系列相关产品和服务,例如腾讯云网络产品、腾讯云CDN加速、腾讯云负载均衡等。您可以通过访问腾讯云官方网站(https://cloud.tencent.com/)了解更多关于这些产品的详细信息和使用指南。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

KestrelServer详解: 网络连接创建

EndPoint属性表示监听器绑定终结点,当AcceptAsync方法调用时,监听器便开始了网络监听工作。...如果将这个HttpParserHandler对象传递给HttpParser对象,后者在请求解析过程中会调用前者相应方法,我们利用这些方法利用读取内容将描述请求HttpRequestFeature特性构建出来...我们调用该工厂BindAsync方法创建了一个连接监听器并将其绑定到采用5000端口本地终结点。...在一个无限循环中,我们调用监听器AcceptAsync方法开始监听连接请求,并最终将代表连接ConnectionContext上下文创建出来。...HandleAsync方法在处理每个请求时会确定是否携带了此报头,并在需要时候调用ConnectionContext上下文 DisposeAsync方法关闭并释放当前连接。

81110
  • win10 uwp 处理用户点击关闭按钮

    UWP 开发时候,我做文档软件需要在文档还没有保存时候,用户点击关闭按钮时候告诉用户需要保存。...{ // 让用户无法关闭 e.Handled = true; var messageDialog = new...(); } 只需要通过 e.Handled = true 就可以阻止用户关闭应用,就这样写出了一个用户无法快速退出应用,基本上只能通过任务管理器才能退出 在我软件里面作为文档软件需要在用户退出时候发现有没有保存文档就提示用户保存...提供了延迟关闭方法 在开始显示提示页面之前,调用 e.GetDeferral() 方法拿到返回值,在执行完成方法之后调用完成方法,请看代码 var deferral = e.GetDeferral...,这样可以在执行完成更多代码之后才调用完成

    88210

    如何将GridViewEX升级到UWP(Universal Windows Platform)平台

    由于微软支持设备种类越来越多,导致ApplicationViewState不再适用。UWP平台提供了其他解决方法如AdaptiveTriggers,内置了自适应布局。...无论是WinRT还是UWP应用,都会使用返回键导航。桌面WinRTx应用会在Xaml文件添加返回按钮。...但是在UWP应用中,非常灵活,桌面应用可以在标题栏中添加返回按钮,在移动设备中不仅能使用标题栏中返回键,也可以使用物理返回键实现导航功能。UWP方法比较通用,且不需要编写自定义Xaml文件。...显然UWPGridView 将所有非空项该属性都设置为None。因此,如果不重写OnDragOver 方法,Drop 事件就不会被触发。...; 运行代码时编译器会发出很多关于ItemContainerGenerator 方法警告,调用ItemsControl 响应方法就可以处理Warning VariableSizedWrapGrid存在很多限制

    2.8K80

    C# 设计模式 责任链 后退按钮使用责任链

    我看了他源代码,他每个页面都把后退按钮点击事件+=他方法。 我们可以使用UWP后退按钮,但是需要小心,在哪些处理需要知道,不可以在每个需要处理都添加事件。...接下来就是需要返回按钮,参见win10 UWP 标题栏后退 protected override void OnNavigatedTo(NavigationEventArgs e)...刚好在显示结束时候关闭双击退出。 在我之前写游戏win10 uwp 商业游戏进入游戏时,用户按下返回按钮,需要返回欢迎界面,那么这时候就需要添加后退处理。...这里意思是如果调用一个方法,这个方法有 await 那么这个方法如果不是 async Task 那么就会直接被跳过,不会往下面执行,所以如果把最后一句代码替换前面的,那么就会调用责任链下一处理,但是没有告诉他已经处理了...%8F-%E8%B4%A3%E4%BB%BB%E9%93%BE.html ,以避免陈旧错误知识误导,同时有更好阅读体验。

    91910

    C# 设计模式 责任链

    我看了他源代码,他每个页面都把后退按钮点击事件+=他方法。 我们可以使用UWP后退按钮,但是需要小心,在哪些处理需要知道,不可以在每个需要处理都添加事件。...接下来就是需要返回按钮,参见win10 UWP 标题栏后退 protected override void OnNavigatedTo(NavigationEventArgs e)...刚好在显示结束时候关闭双击退出。 在我之前写游戏win10 uwp 商业游戏进入游戏时,用户按下返回按钮,需要返回欢迎界面,那么这时候就需要添加后退处理。...当然自己添加处理也是需要判断当前是否已经有权限比他高进行处理,如果有,就不处理。这样写就可以在游戏进行返回。...这里意思是如果调用一个方法,这个方法有 await 那么这个方法如果不是 async Task 那么就会直接被跳过,不会往下面执行,所以如果把最后一句代码替换前面的,那么就会调用责任链下一处理,但是没有告诉他已经处理了

    54930

    win10 uwp 手把手教你使用 asp dotnet core 做 cs 程序 VisualStudio创建项目引用项目创建通用结构设置控制器运行网站UWP 连接上传数据

    控制器就是访问 URL 时可以返回结果类。通过控制器才可以使用 URL 访问,当然使用其他方法也是可以做到,但是没有这个方法好用。 右击 Controler 添加,点击添加控制器 ?...本文不会告诉大家很多关于 ViewModel 方法,如果想了解这个写法,请看win10 uwp MVVM入门 ViewModel 现在需要定义一个数据结构,ObservableCollection 列表...调用 ViewModel 函数用来更新数据 private void Button_OnClick(object sender, RoutedEventArgs e)...因为 asp dotnet core 程序返回是 json ,可以通过设置让他返回 xml 。因为刚才没设置,默认返回格式是 json 。...通过简单 Get 方法访问 URL 可以使用下面代码,参见 win10 UWP GET Post - CSDN博客 public async Task Update()

    1.3K10

    《ASP.NET Core 6框架揭秘》实例演示:自定义一个服务器

    方法为每个IListener对象开启一个“接收和处理请求”循环,循环中每次迭代都会调用IListener对象AcceptAsync方法来接收请求,我们利用RequestContext对象来表示请求上下文...特性集合随后作为参数调用IHttpApplicationCreateContext方法将TContext上下文创建出来,后者将进一步作为参数调用另一个ProcessRequestAsync...待处理结束,IHttpApplication对象DisposeContext方法调用,创建TContext上下文承载资源得以释放。...此上下文进一步作为参数调用了IHttpApplication对象ProcessRequestAsync方法,中间件管道得以接管请求。...在调用WebApplication对象Run方法时显式指定了具有PathBase(“/foobar”)监听地址“http://localhost:5000/foobar/”,如图1所示浏览器以此地址访问应用

    38120

    如何在UWP中统一处理不同设备间页面回退逻辑

    在本篇缪文中,楼主打算给UWP开发初学者讲述一个在开发中经常遇到很现实问题:页面回退逻辑 。...当我们UWP应用程序运行在不同设备上时,不同设备间页面回退逻辑我们就要考虑周全,要考虑不同设备间页面回退操作该如何设计才能更好满足用户使用需求。...为了方便,楼主这里只简单论述一下当我们UWP应用程序运行在PC上和Mobile上时该如何处理不同平台页面回退逻辑。...但是当我们UWP应用程序运行在Mobile上时,如果还是用这种方法来进行页面回退的话,对用户来说就可能不是很友好,因此,我们要投其说好,用手机设备上物理后退键来实现相应页面回退逻辑,其对应API...我们需要为应用程序提供一个全局页面跳转,这样方便使用;其次我们需要将应用程序初始页面改造为一个用户控件,这样就保证引用程序始终加载是一个用户控件。

    97680

    Windows Community Toolkit 3.0 - CameraPreview

    顾名思义,3.0 版本会更注重整个 Windows 平台工具实现,而不再只局限于 UWP 应用,这从 Release Note 也可以看出来:https://github.com/Microsoft/...; Nuget: Microsoft.Toolkit.Uwp.UI.Controls; 开发过程 代码分析 首先来看 CameraPreview 类结构: CameraPreview.Cpmstants.cs...,调用 Stop() 来结束并释放摄像头资源; 而 CameraPreview 类中出现了一个很重要帮助类 CameraHelper,它作用是对摄像头资源获取和视频帧获取/处理,它是 CameraPreview...InitializeMediaCaptureAsync() 上面方法中使用初始化 MediaCapture 方法,首先获取预览帧源,获取顺序是彩色预览 -> 视频录制;接着判断它支持格式,包括视频帧率...(>= 15 帧),媒体编码格式支持(Nv12,Bgra8,Yuy2,Rgb32),按照视频宽高进行排序;对支持状态进行判断,如果状态可用,则返回默认最高分辨率;同时该方法会对权限等进行判断,对错误状态返回对应状态

    63710

    win10 uwp 通过 win2d 画出笔迹 界面笔迹性能原理完全控制墨迹多指输入转换笔迹无限漫游

    我才不告诉大家,我也不知道他是怎么做 完全控制墨迹 在 UWP 笔迹可以通过调用 ActivateCustomDrying 方法完全控制笔迹静态渲染,也就是 InkCanvas 可以让代码处理从动态转静态方法...如果这时还没有将静态笔迹画出来,界面就看不到原来笔迹 在 UWP 可以多次调用 BeginDry 拿到动态笔迹,假如现在有动态笔迹 1、2 调用 BeginDry 会返回动态笔迹 1、2 然后用户继续触摸...,在界面有动态笔迹 3 再次调用BeginDry会返回第三条笔迹。...但是只能调用一次 EndDry 也就是在调用多次 BeginDry 只有只能调用一次 EndDry 不能相邻两次调用 EndDry 方法 在 win2d 画静态笔迹首先需要刷新界面 private void...uwp-%E9%80%9A%E8%BF%87-win2d-%E7%94%BB%E5%87%BA%E7%AC%94%E8%BF%B9.html ,以避免陈旧错误知识误导,同时有更好阅读体验。

    1K20

    依赖属性2:使用依赖属性

    因为这个方法是静态,可以再实现一个同名实例方法(可以参考ContentControlOnContentChanged方法)。...Slider与OneWayBinding"Bug" UWP依赖属性比起WPF有了大幅简化,需要学习地方少了很多,但是功简化了也不一定是一件好事。...在这个例子里,如果在这个函数开头位置调用 range.ReadLocalValue(range.ValueProperty),返回是一个Binding,在结尾位置调用返回则是double类型...在WPF中,这个问题并不存在,因为WPF依赖属性可以使用CoerceValueCallback约束属性值,而UWP依赖属性被简化了,缺少这个功能。...RangeBase.cs 这个是Silverlight开源实现Moonlight源码,Moonlight源码对理解UWP、Silverlight都很有参考价值。

    1.4K30

    UWP 入门教程2——如何实现自适应用户界面

    系列文章 UWP入门教程1——UWP前世今生 如上文所说,布局面板根据可用屏幕空间,指定界面元素大小和位置。例如StackPanel 会水平或垂直排列界面元素。...如图所示,无论用户使用哪种设备,蓝色按钮始终放在文本框右侧,并排放在黄色按钮顶部。 ?...调用API来实现目标设备族群 无论需要调用哪种API,你需要了解API适应设备族群,是否满足您App开发需要。...如果想同时调用很多API,可以使用ApiInformation.IsTypePresent 方法,如下: // Note: Cache the value instead of querying...良好设计从确定用户交互方式开始,同时满足App功能性和外观。用户体验非常重要直接影响了用户是否喜欢你App,使用过程中是否愉悦或始终保持积极情绪,而不受阻碍。

    3.1K50
    领券