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、先启动服务器,再启动客户端。

  • 相关阅读:
    搜索回车跳转页面
    登录验证码
    【排序算法】排序算法之插入排序
    PAT 乙级 1044 火星数字 (20 分)
    PAT 甲级 1035 Password (20 分)
    PAT 甲级 1041 Be Unique (20 分)
    PAT 甲级 1054 The Dominant Color (20 分)
    PAT 甲级 1027 Colors in Mars (20 分)
    PAT 甲级 1083 List Grades (25 分)
    PAT 甲级 1005 Spell It Right (20 分)
  • 原文地址:https://www.cnblogs.com/xixixing/p/11553034.html
Copyright © 2011-2022 走看看