赞
踩
- using System.Net.Sockets;
- using System.Net;
- using System.Reflection;
-
- namespace ConsoleApplication1
- {
- class Program
- {
- //创建服务器端,监听客户端
- public static void Main(string[] args)
-
- {
- IPAddress ip = IPAddress.Parse("127.0.0.1");
- int port = 5566;
- TcpListener sever=new TcpListener(ip,port);
- sever.Start();//开启之后才能执行下面的监听
- sever.AcceptTcpClient();//监听客户端的连接
-
- }
- }
- }
- using System.Net.Sockets;
- using System.Net;
- using System.Reflection;
-
- namespace ConsoleApplication1
- {
- class Program
- {
- //创建客户端,连接服务器,读取写入数据
- public static void Main(string[] args)
-
- {
- IPAddress ip = IPAddress.Parse("127.0.0.1");
- int port = 5566;
- TcpClient client=new TcpClient();
- client.Connect(ip,port);//客户端连接服务器端
- //当服务器端与客户端连接上之后,就该获取两个计算机之间传递的数据,
- // NetworkStream stream = client.GetStream();
- //发送和接收都会用到数据流
- // stream.Read();
- // stream.Write();
- // client.GetStream();// 可以从数据流中获取.获取数据流的方法,
- }
- }
- }
UDP协议不分服务器与客户端的区别,它并不是由一台机器向一台主机器传,UDP先是以数据报的模式扔到网上,自己去下载就可以了,所以UDP协议接收与发送都是Client。如下所示:
- using System;
- using System.Net.Sockets;
- using System.Net;
- using System.Reflection;
- using System.Text;
- using System.Threading;
-
- namespace ConsoleApplication1
- {
- class Program
- {
- public static void Main(string[] args)
-
- {
- UDPtest.Start();
- }
- }
-
- class UDPtest
- {
- //一个类中既要收又要发数据的话需要线程来辅助,不然会堵塞
- public static void Start()
- {
-
- UdpClient client=new UdpClient(new IPEndPoint(IPAddress.Any,0));
-
- IPEndPoint endpoint=new IPEndPoint(IPAddress.Parse("255.255.255.255"),7788);
- //服务端把一句话发送给客户端
- byte[] buf= Encoding.Default.GetBytes("Hello world"); //字符串进行转化成想要的字节流
-
- Thread tr=new Thread( new ThreadStart(Receive));//开启线程调用另一个协程
-
- tr.IsBackground = true;//确保开启的线程是主线程
- tr.Start();
-
- while (true)//循环,连着发送数据
- {
-
- client.Send(buf, buf.Length, endpoint);//向谁发送多长的字节
- Thread.Sleep(1000);//每隔一秒休眠一下
-
- }
-
-
- }
- //接收数据
- static void Receive()
- {
- UdpClient client=new UdpClient(new IPEndPoint(IPAddress.Any,7788));
-
- IPEndPoint endpoint=new IPEndPoint(IPAddress.Parse("255.255.255.255"),0);
- while (true)//因为是循环发送,我们就循环接收
- {
-
- byte[] buf= client.Receive(ref endpoint);//接收数据,把终结点传进来
-
- string mess = Encoding.Default.GetString(buf);
- Console.WriteLine(mess);
- }
- }
-
-
-
- }
-
-
- }
-
运行打印结果:
TCP是传输控制协议,UDP是用户数据报协议,两者是相对应的协议。
解释: Tcp是基于连接,Udp是基于非连接。
使用TCP时在正式收发数据前,必须与对方进行可靠的连接。一个TCP连接必须经过三次对话才能够建立起来,过程比较复杂。
UDP不与对方进行连接而是直接把数据包发送过去。基于这种情况UDP发送数据可能会丢包不安全。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。