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. 在服务器的窗口上会显示客户端的连接消息
  • 相关阅读:
    php简单的server登陆验证
    CentOS更新php(PHP 5.2+ is required问题)
    CentOS 5.5 x86_64下安装oci8与pdo_oci扩展
    httpd.conf详解
    Thinkphp中去除URL里的index.php
    Oracle使用虚拟表dual一次插入多条记录【摘录】
    【问题】apache目录403错误
    mysql中存储引擎MyISAM与InnoDB的一些区别
    从开辟蓝海到保卫蓝海(三)
    答MM问:经济泡沫破了不更好吗?
  • 原文地址:https://www.cnblogs.com/Fflyqaq/p/10822229.html
Copyright © 2011-2022 走看看