zoukankan      html  css  js  c++  java
  • 1、Socket通信

    【TCP】

    服务器端:无目标插座升级为有目标插座后,就可以通过有目标的插座收发数据

    客户端:

    实战:此案例有利于理解Socket的工作流程。

    缺点:服务器只能接收1个客户端的连接,因为只写了一个Accept;服务器与客户端都只能收、发一次

    1、创建控制台程序SocketTcpServer,注意引用using System.Net; using System.Net.Sockets;

    //1、创建socket
    Socket tcpServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//地址族、套接字类型、协议
    //2、绑定本地ip和端口号(一个网卡就有一个ip,电脑可能有多个ip)
    IPAddress ipAddress = IPAddress.Parse("192.168.3.3");//ip
    EndPoint point=new IPEndPoint(ipAddress,2000);//指定ip和端口号
    tcpServer.Bind(point);
    //3、开始监听
    tcpServer.Listen(10);//最大连接数
    Socket clientSocket= tcpServer.Accept();//暂停当前线程,直到有客户端连接之后,才进行之后的代码
    Console.WriteLine("一个客户端连接过来了");
    //4、收发数据(使用有目标的插座)
    //发数据
    string message = "你好,我是服务器";
    byte[] data= Encoding.UTF8.GetBytes(message);//字符串转成字节数组
    clientSocket.Send(data); //发送的是字节数组
    Console.WriteLine("向客户端发送了一条数据");
    //收数据
    byte[] data2 = new byte[1024];//收信息需开辟内存
    int length=clientSocket.Receive(data2);//接收的是字节数组
    string message2 = Encoding.UTF8.GetString(data2, 0, length);//字节转字符串,展示的是字符串
    Console.WriteLine("接收到了客户端发送过来的消息:" + message2);
    
    Console.ReadKey();//防止一闪就退出

    2、创建控制台程序SocketTcpClient,注意引用using System.Net; using System.Net.Sockets;

    //1、创建socket
    Socket tcpClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    //2、连接远程的IP和端口号
    IPAddress ipAddress = IPAddress.Parse("192.168.3.3");//字符串转IP
    EndPoint point = new IPEndPoint(ipAddress, 2000);
    tcpClient.Connect(point);
    //3、收发数据(使用有目标的插座)
    //收数据
    byte[] data=new byte[1024];//收信息需开辟内存
    int length= tcpClient.Receive(data);//data数组接收数据,返回已接收的字节数
    string message = Encoding.UTF8.GetString(data, 0, length);//转字符串,只转化接收到的数据,剩余的空字节没必要转化
    Console.WriteLine("接收数据:"+message);
    //发数据
    Console.WriteLine("发送数据:");
    string message2 = Console.ReadLine();
    tcpClient.Send(Encoding.UTF8.GetBytes(message2));//发送的是字节数组
    
    Console.ReadKey();//防止一闪就退出

    3、先启动服务器,再启动客户端。

  • 相关阅读:
    JSON的数据格式
    KMP 算法
    爬虫原理
    快速求小于N的所有素数
    对程序员最具影响的书籍
    实现下拉更新UITableView EGORefreshTableHeaderView
    温习C/C++笔记——浅谈琐碎知识点(1)
    C++内存对齐
    SQL Server 安装程序无法获取 ASPNET 帐户的系统帐户信息
    Asp.Net生命周期事件
  • 原文地址:https://www.cnblogs.com/xixixing/p/11553034.html
Copyright © 2011-2022 走看看