TCPlistener和TCPclient
这里说一下socket编程中的两个类TCPlistener和TCPclient,其中listener顾名思义就是监听,是服务器端用的类,TCPclient是客户端用的类,这两个类把socket封装好,当需要传输时可以直接调用,不需要重新定义socket。用listener和client步骤也是差不多,直接上代码:
//1.创建TcpListen对socket进行了一层封装,这个类里面自己会去创建socket对象
TcpListener listener=new TcpListener(IPAdrress.Parse("192.xxx.xxx.x"),8888);
//2.开始监听
listener.Start();
//3.等待客户端连接
TcpClient client=listener.AcceptTcpClient();
//4.取得客户端的数据流
NetworkStream stream=client.GetStream();//得到了一个网络流,从这个网络流读取数据
byte[] data=new byte[1024];
while(true)
{
//0表示从数组的哪个索引开始存放数据
//1024表示最大读取的字节数
int lentgth=stream.Read(data,0,1024);
string message=Endcoding.UTF8.GetString(data,0,length);
Console.WriteLine("收到消息为:"+message);
}
//接受完关闭要释放资源
stream.Close();
client.Close();
listener.Close();
Console.ReadKey();
接着是客户端代码,首先要注意TCPlistener和TCPClient定义时是不一样的
当我们创建tcpclient对象的时候,就会跟server去建立连接
TcpClient client = new TcpClient("192.168.101.6",7788);
NetworkStream stream = client.GetStream();
while(true)
{
string message = Console.ReadLine();
byte[] data = Encoding.UTF8.GetBytes(message);
stream.Write(data, 0, data.Length);
}
stream.Close();
client.Close();
Console.ReadKey();
显然,用这两个类写通讯会方便很多,但TCP协议有时候缺不能满足需求,接着会说下另一个用的多的协议UDP,UDP协议速度快,占用少,但是不可靠容易丢包,UDP不需要建立连接,也没有服务端和客户端之分,所以UDP只有UdpClient类。
未完待续