• TCPListener和TCPClient之间的通信代码


    《服务端》

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Net.Sockets;
    using System.Net;
    using System.Threading.Tasks;

    namespace TCPListener_服务端
    {
    class Program
    {
    static void Main(string[] args)
    {
    //1.创建Socket对象并绑定IP和端口号
    TcpListener listener = new TcpListener(IPAddress.Parse("211.148.100.178"), 7788); //这个TcpListener是将Socket创建对象的方式封装起来存储在这个类中
    //2.开始监听
    listener.Start(100);
    //3.等待客户端连接过来
    TcpClient client = listener.AcceptTcpClient();
    //4.取得客户端发送过来的数据
    NetworkStream stream = client.GetStream(); //用于接受和发送数据,得到一个网络流,通过这个网络流来接受和发送数据
    //5.读取接收到的数据
    byte[] data = new byte[1024]; //5.2.创建一个容器用于接受数据并传入到第一步的第一个位置的参数
    //8.将我们需要读数据和输出数据的代码放入一个死循环中去
    while (true)
    {
    int length = stream.Read(data, 0, 1024); //5.1.建立读数据,需要传入三个参数和一个返回值。容器、从哪个位置开始、读取的最大数据、返回值为实际读取的参数
    //6.输出接收到的这个数据
    string message = Encoding.UTF8.GetString(data, 0, length); //1.先将接收到的数据转化可输出的字符串类型
    Console.WriteLine("收到消息:" + message); //2.输出收到的信息
    }

    //7.输出完数据以后我们需要释放这些数据
    stream.Close(); //1.先释放流的数据
    client.Close(); //2.再释放客户端的连接数据
    listener.Stop(); //3.关闭监听
    Console.ReadKey();
    }
    }
    }

    《客户端》

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Net.Sockets;
    using System.Net;

    namespace TCPClient_客户端
    {
    class Program
    {
    static void Main(string[] args)
    {
    //1.创建Socket对象并且绑定IP和端口号
    TcpClient client = new TcpClient("211.148.100.178", 7788);

    //2.创建网络流和服务端形成交换
    NetworkStream stream = client.GetStream();

    //5.将3步骤写入一个死循环中可以让用户重复输入需要的信息
    while (true)
    {
    //3.然后写入需要交换的数据
    string message = Console.ReadLine(); //2.这里是接受用户在客户端中输入的一段字符串
    byte[] data = Encoding.UTF8.GetBytes(message); //3.这个方法就是讲输入的字符串转化到能够写入的byte类型
    stream.Write(data, 0, data.Length); //1.这里是写入需要传递给服务端的数据,第一个参数是传入的字符数组,第二个是从哪个开始的偏移量,第三个是写入的数据大小长度
    }

    //4.关闭流
    stream.Close();
    client.Close();
    Console.ReadKey();
    }
    }
    }

    他们都是基于NetworkStream类然后通过stream流通信然后 通过read和write方法来读和取数据

  • 相关阅读:
    托管和使用WCF服务:WAS(Windows激活服务)
    突发的灵感
    C# 常见图像处理效果
    C# WinForm TreeView 递归选择父节点和子节点
    C# WinForm ComboBox 枚举 选定值
    C# Socket 异步 UDP
    C# WinForm 判断窗体控件是否修改过
    C# 线程同步 信号量 Semaphore
    C# WinForm ComboBox Items 选定值
    C# WinForm ComboBox 自定义数据项 (ComboBoxItem )
  • 原文地址:https://www.cnblogs.com/ylllove/p/6852125.html
Copyright © 2020-2023  润新知