SOCKET Communication writen in C# (2) TcpListener 和TcpClient 同步阻塞模式

TcpListener 和TcpClient 只是提供TCP连接的网络服务:

以网络NetWorkStream流的方式来进行数据的通讯.直接对networkstream进行read ,write.

操作默认是同步阻塞的方式 blocking synchronous mode.,但对象类内部都提供了相应的异步非阻塞的方式来进行网络流的操作.

 

同步阻塞操作:

 AcceptSocket or AcceptTcpClient 

Connect,Read,Write

 

异步非阻塞

BeginAcceptSocket

BeginAcceptTcpClient

EndAcceptSocket

EndAcceptTcpClient

BeginConnect

EndConnect

 

BeginRead

BeginWrite

EndRead

EndWrite

 

 

TcpListener :

  调用start方法后,开始接收客户端的请求,这时候,tcplistener会将进入的请求连接进行排队处理直到前面的处理连接关闭或是队列达到最大为止.

   AcceptSocket or AcceptTcpClient获得在请求连接队列里的下一个客户端请求连接,重要的是这两个方法都是阻塞的block.

   所以如果你想避免进入阻塞等待,可以先调用pending方法来判断是否在请求连接队列里是否存在等待的请求连接.

without calling connect  method ,it's ok!

The Stop method does not close any accepted connections. You are responsible for closing these separately.

  NetworkStream的Read,必须client的连接还保存着,否则抛出异常消息

 

获得Stream的方法:

      1. NetworkStream DataRiver = client.GetStream();
           
       2. NetworkStream DataRiver = new NetworkStream(socket) //必须以AcceptSocket 获得SOCKET对象作为参数,而不是TcpClient对象

 

TcpClient:

你可以有两种方法连接到被侦听的端口host上

1.Create a TcpClient and call one of the three available Connect methods(正常方式)

2.Create a TcpClient using the host name and port number of the remote host. This constructor will automatically attempt a connection(使用name和port构造tcpclient),just directly call GetStream() then get  Communication Stream

 

同样默认是同步阻塞的 in synchronous blocking mode

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值