网络编程TCP协议包装类(三)
1.介绍几个主要的类 TCPCliet TCPListener,NetWorkStream
NetWorkStream:
NetworkStream netstream = new NetworkStream(socket);//创建
bool canread= netstream.CanRead;//是否可读
bool canwrite = netstream.CanWrite;//是否可写
netstream.Close();//关闭
System.IO.Stream s = new System.IO.MemoryStream();
netstream.CopyTo(s);//复制内容
bool canAvilable= netstream.DataAvailable;//是否有课用字节
netstream.Flush();//刷新
long length= netstream.Length;//流长度
int r= netstream.Read(byte[] buffer, int offset, int size);//读
int w netstream.Write(byte[] buffer, int offset, int size);//写
注意:NetworkStream 不支持随机访问,也就是seek,position会抛出异常,因此大部分与BufferedStream一同使用,以实现类似缓冲区的模式。
TcpClient :
TcpClient client = new TcpClient();
client.Close();//关闭
client.Connect();//连接
client.Connected;//是否连接
client.GetStream();//获取网络流
client.Available;//获取已经从网络接收且可供读取的数据量
client.Client;//获取或设置基础 System.Net.Sockets.Socket
client.ExclusiveAddressUse;//是否只允许一个客户端使用端口
client.LingerState;//获取或设置有关关联的套接字的延迟状态的信息
client.NoDelay;//获取或设置一个值,该值在发送或接收缓冲区未满时禁用延迟。
client.ReceiveBufferSize;//获取或设置接收缓冲区的大小
client.ReceiveTimeout;//等待接收数据的时间量
client.SendBufferSize;//获取或设置发送缓冲区的大小。
client.SendTimeout;//等待发送操作成功完成的时间量。
TcpListener :
TcpListener listener = new TcpListener(21);
listener.AcceptSocket();//接受挂起的连接请求。
listener.AcceptTcpClient();//接受挂起的连接请求
listener.LocalEndpoint;// 获取当前 System.Net.Sockets.TcpListener 的基础 System.Net.EndPoint
listener.Pending();// 确定是否有挂起的连接请求。
listener.Server;//获取基础网络 System.Net.Sockets.Socket。
listener.Start();//启动
listener.Stop();//停止监听
注意:在客户端和服务端不能同时发送数据或者同事接收数据,这样会出现死锁状态,只能是一方发送一方接收才行。
以上都是讲的在同步模式下实现,这样会阻塞当前线程,C#提供了beginXXX和endXXX模式用代理的方式执行方法,其实在底层使用了线程池的概念。

浙公网安备 33010602011771号