C#中的TCP编程

来源:互联网 发布:大数据第三方服务商 编辑:程序博客网 时间:2024/05/07 17:05

TCP 编程 

1,TCP 的特点: 向应用进程提供面向连接的服务;提供全双工数据传输服务;提 
供面向字节流的服务; 
2,TcpClient 编程与 Socket 的区别? 
     .NET 提供面向 TCP 编程的相关类 (TcpClient和 TcpListener),比位于底层 
的 Socket 类提供了更高层次的抽象,它们封装 TCP 套接字的创建,不需要处理 
连接的细节。 
3,什么是 TCP 消息无边界问题? 如何解决? 
   消息无边界是指 TCP 以字节流形式发送消息时,并没有指定消息的长度或消 
息边界的标记,因此不能保证单个 Send 方法发送的数据被单个 Receive 方法接 
收。 
   解决方法:1,发送固定长度的消息; 2,将消息长度与消息一起发送; 3, 
使用特殊标记分隔消息; 
4,TCP 消息网络流 
    网络流对象(NetworkStream)        只适用于TCP ,不适用于UDP; 
   NetworkStream netStream=tcpClient.GetStream() //获取网络流 
   StreamReader sr=new StreamReader(netStream,Encoding.UTF8); 
   StreamWriter sw=new StreamWriter(netStream,Encoding.UTF8); 
    … 
   //发送数据 
   string str=“发送的数据”;  
   sw.WriteLine(str);        写带有消息边界标记的消息 
   //接收数据 
   string  receString=sr.ReadLine(); 
5,BinaryWriter 的Write 写法会自动附加长度前缀 
     使用 BinaryWriter 写内容是,该方法会自动计算内容占用的字节数,并使 
用 4 个字节作为前缀将其附加到内容的前面;接收时首先读取内容的长度前缀, 
并按照该长度接收本次消息的内容。P86 
6,TCP 异步 
  实现模式: 
  1,基于事件的异步设计模式 ;如:BackGroundWorker、PictureBox 控件 
  2,基于 IAsync的异步设计模式 
  异步调用同步方法的使用效果的实质是异步调用,不等同于该方法的同步编 
程。 
0 0
原创粉丝点击