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. 在服务器的窗口上会显示客户端的连接消息
  • 相关阅读:
    Caffe + Ubuntu 15.04 + CUDA 7.0 新手安装配置指南
    姚斌分布式作业一
    一个简单正则表达式引擎的实现
    学习编程的方法
    [Leetcode]012. Integer to Roman
    [Leetcode]011. Container With Most Water
    JOS lab1 part2 分析
    我的Android Studio配置
    [Leetcode]009.Palindrome Number
    [Leetcode]008.String to Integer (atoi)
  • 原文地址:https://www.cnblogs.com/Fflyqaq/p/10822229.html
Copyright © 2011-2022 走看看