Socket监听与TcpListener监听的区别和用法
socket是针对应用层和传输层之间封装的接口
Tcplistener是对socket tcp协议封装的接口,更便于开发
一.服务器
在NET框架下可以方便的使用tcplicenter和tcpclient两个类来实现tcp编程,而无需直接操作socket,这也是这两个类方便的地方。对于tcplistener可以理解是用在服务端的,仅需要设置一个监听端口即可,如
var listener = new TcpListener(9000);//监听9000端口
然后调用 Start方法开始监听:
listener.Start(10);//挂起队列最大长度10个
再然后就是等待客户端的接入了,通常可以用一个无限循环来接受不断请求的客户端
static void Main(string[] args)
{
//1.声明一个listener:套接字和接口都绑定好了
TcpListener listener = new TcpListener(IPAddress.Parse("192.168.0.100"), 7788);
//2.开始监听
listener.Start();
//3.等待客户接入
TcpClient tcpClient = listener.AcceptTcpClient();
//4.创建一个流用来收发数据
NetworkStream stream = tcpClient.GetStream();
//读入,也就是接受一个数据
byte[] data = new byte[1024];
int length = stream.Read(data, 0, 1024);
string message = Encoding.UTF8.GetString(data, 0, length);
Console.WriteLine(message);
//5.关闭相应的流和监听器
stream.Close();
listener.Stop();
Console.ReadKey();
}
二.客户端
static void Main(string[] args)
{
//1.声明一个客户端
TcpClient tcpClient = new TcpClient("192.168.0.100",7788);
//2.声明一个流用来读写数据
NetworkStream stream= tcpClient.GetStream();
string message = Console.ReadLine();
byte[] data = Encoding.UTF8.GetBytes(message);
stream.Write(data, 0, data.Length);
//3.关闭相应的东西
stream.Close();
tcpClient.Close();
Console.ReadKey();
}