Socket基础个人理解(案例)

    xiaoxiao2022-06-30  98

    使用TCP的HelloServer

    Socket的介绍

    Socket类

    构造函数定义:

    public Socket { AddressFamily addressFamily,//制定Socket中的解析地址的寻址方案,ip网络用addressFaily.InterNetwork SocketType socketType,//指定Socket类型,TCP用SoocketType.Stream,UDP使用SocketType.Dgram ProtocolType protocolTyppe//指定Socket类支持的协议。除了常见的ProtocolType.Tcp和ProtocolType.Udp,还有许多,例如IPv6 };

    Socket类中的方法: Bind(); Listen(); Accept();

    发送数据Rend(); 接受数据Receive();

    禁用Socket的发送接受Shutdown();

    释放Socket:Close();

    小伙子们,挽起袖子撸代码(第一个HelloServer程序)

    创建控制台程序——服务端

    哦吼~~~~~

    using System; using System.Collections.Generic; using System.Net; using System.Net.Sockets; using System.Text; namespace sockerService { class MainClass { static void Main(string[] args) { //创建socket,包含三个参数、 Socket tcpServer = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); //绑定IP IPAddress ipAddress = IPAddress.Parse("127.0.0.1");//IP //绑定端口号 IPEndPoint point = new IPEndPoint(ipAddress, 891); //绑定端口 //申请一个可用端口 tcpServer.Bind(point); //设置最大连接数 tcpServer.Listen(100); Console.WriteLine("等待连接中......"); //等待用户连接 Socket clientSocket = tcpServer.Accept(); string message = "hello,欢迎你"; Console.WriteLine("一个用户已连接......"); //将message转换成恒字节格式,<UTF8><https://baike.baidu.com/item/UTF-8/481798?fr=aladdin> Byte[] data = Encoding.UTF8.GetBytes(message); //将转换完的字节数组发送到客户端 clientSocket.Send(data); //定义第二个数组来接受客户端发送的消息 Byte[] data2 = new byte[1024]; //记录接受到信息的长度 int length2 = clientSocket.Receive(data2); //将接受到的字节文件转换成string类型· string message3 = Encoding.UTF8.GetString(data2,0,length2); Console.WriteLine(message3); Console.ReadKey(); } } }

    创建控制台程序——客户端

    哦吼~

    using System; using System.Net.Sockets; using System.Net; using System.IO; using System.Text; using System.Threading.Tasks; namespace sockrtInfo { class MainClass { public static void Main(string[] args) { //1.创建socket Socket tcpClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //可以吧一个字符串的IP地址转换成一个IPADDRESS的对象 IPAddress ipaddress = IPAddress.Parse("127.0.0.1"); EndPoint point = new IPEndPoint(ipaddress, 891); //2/发起建立连接的请求 tcpClient.Connect(point);//通过 IP+端口号定位到一个需要连接的服务器端 byte[] data = new byte[1024]; //这里传递一个BYTE数组,实际上是这个数组来接受数据 int length = tcpClient.Receive(data); //只把接受到的数据转换 string message = Encoding.UTF8.GetString(data, 0, length); Console.WriteLine(message); //向服务器发送消息 string message2 = Console.ReadLine(); tcpClient.Send(Encoding.UTF8.GetBytes(message2)); tcpClient.Close(); Console.ReadKey(); } } }

    运行结果

    在客户端控制台中输入“哦吼”,服务端会跟着输出“哦吼”,嘻嘻

    到此,就实现了一个最简单的TCP服务端与客户端的通信。


    最新回复(0)