试这将前面的TcpListener和TcpClient,只针对TCP的协议操作socket
基本上只把对象换成System.Net.Sockets.Socket没什么大问题.
如果要编写相对简单的应用程序,而且不需要最高的性能,则可以考虑使用 TcpClient、TcpListener 和 UdpClient。这些类为 Socket 通信提供了更简单、对用户更友好的接口。
但是Socket对象有几个新对象需要了解一下:
1.
SocketFlags 枚举
此枚举有一个 FlagsAttribute 属性,通过该属性可使其成员值按位组合
http://msdn.microsoft.com/zh-cn/library/system.net.sockets.socketflags.aspx
SocketError 枚举
定义 Socket 类的错误代码。
http://msdn.microsoft.com/zh-cn/library/system.net.sockets.socketerror.aspx
SocketException 类
发生套接字错误时引发的异常。http://msdn.microsoft.com/zh-cn/library/system.net.sockets.socketexception.socketexception.aspx
Socket..::.Available 属性
从网络接收的、可供读取的数据的字节数。
1.如果当前使用的是非阻止 Socket,一种较好的做法是在调用 Receive 之前使用 Available 来确定数据是否排队等待读取。可用的数据即网络缓冲区中排队等待读取的全部数据。如果在网络缓冲区中没有排队的数据,则 Available 返回 0。
2.如果远程主机处于关机状态或关闭了连接,则 Available 会引发 SocketException。如果收到 SocketException,请使用 SocketException..::.ErrorCode 属性获取特定的错误代码
编写过程中发现在设置回调函数参数AsyncCallback CallBack ,实际上不需要去设置该对象,直接使用回调函数的名称就可以了.