C# Tcp通信服务器的同步和异步方式

本文探讨了C#中TCP通信服务器的同步和异步处理方式。同步处理采用阻塞式,程序在监听阶段会等待连接请求,而异步处理则在后台运行,接收到请求时自动调用回调函数,不影响主程序。当在GUI应用中,异步处理能避免程序无响应问题。示例代码展示了阻塞式和非阻塞式的区别。在实际项目中,作者从阻塞式转向非阻塞式,解决了程序停滞的问题。
摘要由CSDN通过智能技术生成

一、同步和异步

同步和异步指的是在处理TCP连接时采用阻塞式还是非阻塞式进行处理。

阻塞式即同步处理方式为:在侦听服务器端口时程序死在侦听阶段,类似于一个while(true)的死循环,直到有新的连接请求接入时,才会break出这个死循环,程序才会向下一步运行。

非阻塞式即异步处理方式为:在侦听服务器端口并非死等的方式,而是放在程序运行的后台,直到有新的连接请求接入时,自动调用一个回调函数来对其进行处理,不会影响主程序的进行。

当我们做一个小的具有GUI界面的TCP聊天软件时,如果将TCP通信部分写在主程序中而不是在一个线程中处理的时候,等待侦听端口会使整个程序页面无响应(道理很简单,因为程序死在了这里,对于其他事件的响应当然不会被触发),这时候就用到了异步的处理。下面对于这两种方式分别做阐述和代码演示。


二、同步和异步TCP通信

我们先来看两段示例程序:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets; 

namesp
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值