zoukankan      html  css  js  c++  java
  • C#网络编程学习(1)---Socket之Tcp协议的简单使用

    使用Tcp协议实现最简单的服务器与客户端通信

    1、方法介绍

    public Socket(AddressFamily addressFamily,SocketType socketType,ProtocolType protocolType);
    参数1:指定Socket使用的寻址方案(IPV4还是IPV6)
    AddressFamily.InterNetwork:IPV4类型
    AddressFamily.InterNetworkV6: IPV6类型

    参数2:指定Socket的类型
    SocketType.Stream:Tcp使用的字节流
    SocketType.Dgram:Udp使用的数据报

    参数3:指定Socket使用的协议
    ProtocolType.Tcp:TCP协议
    ProtocolType.Udp:UDP协议

    IPEndPoint()
    是一个IP地址和端口号的集合

    IPAddress.Parse("127.0.0.1")

    把字符串转换为IPAddress实例

    2、服务器端

    static void Main(string[] args)
    {
        //1.创建socket
        Socket tcpServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    
        //2.绑定IP和端口号
        EndPoint point = new IPEndPoint(IPAddress.Parse("172.168.33.33"), 6666);
        tcpServer.Bind(point); //绑定方法
    
        //3.开始监听,等待用户连接
        tcpServer.Listen(100); //监听方法,最大连接数为100
        Socket tcpClient = tcpServer.Accept(); //等待连接,此为阻塞方法
        Console.WriteLine("客户端连接。。。");
    
        //4.接收用户发送的消息
        byte[] data = new byte[1024];
        int length = tcpClient.Receive(data); //接收数据data
        string str = Encoding.UTF8.GetString(data); //字节数组转换为string
        Console.WriteLine("接收到客户端的数据为:" + str);
    
        Console.ReadKey();
    
    }
    

    3、客户端

    static void Main(string[] args)
    {
        //1.创建socket
        Socket tcpClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    
        //2.发起连接请求
        EndPoint point = new IPEndPoint(IPAddress.Parse("172.168.33.33"), 6666);
        tcpClient.Connect(point); //连接
    
        //3.向服务器发送消息
        byte[] data = Encoding.UTF8.GetBytes("Hello I am Ffly");
        tcpClient.Send(data);  //发送数据
    
        Console.ReadKey();
    
    }
    

    4、效果

    1. 先运行服务器窗口
    2. 再运行客户端窗口
    3. 在服务器的窗口上会显示客户端的连接消息
  • 相关阅读:
    时间及时间戳相互转换
    指针偏移
    C# TreeView模糊查找节点
    Checkedlistbox只能单选不能多选
    获取本机的IP地址
    检测插件是否已注册,注册插件
    知道内存中一个图片的指针IntPtr大小,转换成图片显示
    C# 判断点是否在矩形框内
    C# 从图片中截取一部分图片,并返回所截取的图片
    C# 管道通信 (client —— server)Framework2.0版本也可用
  • 原文地址:https://www.cnblogs.com/Fflyqaq/p/10822229.html
Copyright © 2011-2022 走看看