TCP通讯机制是:一对一的传递机制,具体分为客户端和服务器。就好比打电话的方式,客户端(主动打电话的人),服务器(接听电话的人)。
二者的分别作用是:客户端:1主动打电话(也就是试连接) 2数据传送
服务器:1时时刻刻在电话旁边的等电话(侦听) 2 数据传递
功能实现的步骤是这样的:
第一步:连接彼此间的数据传送链
代码说明: 试连接(客户端)
TcpClient client = new TcpClient(_RemoteIp, _RemotePort);//并启动了,和连接作用
或者TcpClient tclient = new TcpClient(); tclient.Connect("192.168.1.100", 8080);
侦听(服务器)
IPAddress ipa = IPAddress.Parse("192.168.1.100");
TcpListener myListener = new TcpListener(ipa, 8080);
myListener.Start();
如果没有侦听,就会出现报错,并且二者一直在连接,连接成功后才会去执行下一步代码
第二步:数据链已经建立好了,就要完成数据的传送 客户端和服务器都有数据发送,接受的功能它们是一一对应使用的,不可能同一客户端即完成传送数据和接受数据的内容,不能去读出缓存中的内容
客户端功能实现:
1.发送:NetworkStream ns = tclient.GetStream();
String content = "要发送的内容";
byte[] data = Encoding.Unicode.GetBytes(content);
ns.Write(data, 0, data.Length);
2.接受:if (tclient.Available > 0)
{
byte[] data = new byte[1024];
ns.Read(data, 0, 1024);
String content = Encoding.Unicode.GetString(data);
}
服务器端的功能实现: Socket mySocket = myListener.AcceptSocket();
1.发送:mySocket.Send(Encoding.Unicode.GetBytes("要发送的内容"));
2.接收:byte[] data = new byte[1024];
if (mySocket.Available > 0)
{
mySocket.Receive(data);
String content = Encoding.Unicode.GetString(data);
}
基本的实现了数据传递的功能了,以下对一些细节说明一下:
1.连接地址通常包括两部分——主机名和端口,如www.yesky.com:80中,www.yesky.com就是主机名,80指主机的80端口;另一种方式是主机名也可以用IP地址代替。
2.在使用结束后,需要把相关类关闭掉,避免下次使用时,出现端口占用报错
3. 对于服务器的侦听,需要建立一个建立一个无限循环来实现侦听的功能
4.数据传递的过程中,需要进行字符串的转换,采用不同的编码形式,同样也存在不同的解码方式,类似于串口的通讯机制