三者所属命名空间:
System.Net.Sockets.Socket
System.Net.Sockets.TcpListener
System.Net.Sockets.TcpClient
一、三者在同一命名空间下,属于平级关系;
从命名上可以看出来,后两个类针对的是Tcp,这两个确实是基于Tcp协议的(相当于另一种套接字)。如果确定自己的程序是基于Tcp协议通讯的,可以直接用这两个类;
而第一个(Socket)则范围更广,包括Tcp、UDP等各种协议,需要编程时自己指定具体哪一种协议。若果确定自己的程序不是基于Tcp协议通讯的,则用这个类。
二、接收、发送数据所调用的函数不同:
TcpClient: Read() / Write()
Socket: Receive() / Send()
三、调用上面函数的主体不同:
TcpClient:用网络流,NetworkStream TcpClient.GetStream();
Socket: 用通信套接字,Socket connSocket = sockWatch.Accept();
1.Socket
Socket的用法:
Socket sockWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //实例化监听套接字
sockWatch.Bind(IPEndPoint); // 绑定
sockWatch.Listen(); //启动监听
Socket connSocket = sockWatch.Accept(); //为新建连接创建新的Socket
connSocket.Receive(byte[] buffer); //套接字接收数据,将数据存入接收缓冲区。
connSocket.Send(byte[] buffer); //将数据发送到连接的 System.Net.Sockets.Socket。
2.TcpListener、TcpClient
TcpListener:侦听传入的连接请求
TcpListener _listener = new TcpListener(IPEndPoint);
_listener.Start(); //开始侦听传入的连接请求
TcpClient:用于发送和接收数据的System.Net.Sockets.TcpClient.
TcpClient connTcpClient = _listener.AcceptTcpClient(); //为新建连接创建通信TcpClient
NetworkStream netStream = connTcpClient.GetStream(); //获取网络流
netStream.Read(byte[] buffer,int offset,int size); //从流中读取数据
netStream.Write(byte[] buffer,int offset,int size); //将数据写入到流中
注意:使用 TcpClient时要先获取用于发送和接收数据的 System.Net.Sockets.NetworkStream(网络流),用此网络流进行发送和接受数据。
---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------
详细请查看:http://net.itheima.com/