一、同步和异步
同步和异步指的是在处理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