• C# socket网络编程之Tcplistener和TcpClient


    1.首先创建server端

        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("Server is Running...");
                //1.TcpListener对socket进行了一次封装,这个类会自己创建socket对象
                IPAddress iPAddress = IPAddress.Parse("127.0.0.1");
                TcpListener listener = new TcpListener(iPAddress, 8500);
    
                //2.开始监听
                listener.Start();
                Console.WriteLine("Start Listening...");
    
                //等待客户链接过来
                TcpClient client = listener.AcceptTcpClient();
    
                //4.取得客户端发送过来的数据
                NetworkStream stream = client.GetStream();
    
                byte[] data = new byte[1024];//创建一个是故居容器,用来承接数据
    
                while (true)
                {
                    //第一个参数表示要存放到的数据容器,第二个数据表示从什么位置开始存,第三个参数表示最大读取字节数
                    int length = stream.Read(data,0,1024);
                    string message = Encoding.UTF8.GetString(data, 0, length);
                    Console.WriteLine("收到了消息"+message);
                }
    
                stream.Close();
                client.Close();
                listener.Stop();
                Console.ReadKey();
            }

    2. 创建客户端

        class Program
        {
            static void Main(string[] args)
            {   
                //1.创建tcpClient时就会跟server建立连接
                TcpClient client = new TcpClient("127.0.0.1",8500);
    
                //2.通过网络流进行数据交换
                NetworkStream stream = client.GetStream();
    
                while (true)
                {
                    string message = Console.ReadLine();
                    byte[] data = Encoding.UTF8.GetBytes(message);
                    //read用来读取数据,write用来写入数据,其实就是发送数据
                    stream.Write(data,0,data.Length);
                }
                
    
                stream.Close();
                client.Close();
                Console.ReadKey();
            }
  • 相关阅读:
    [bzoj2333] [SCOI2011]棘手的操作 (可并堆)
    自定义控件1_切换按钮
    View Animation 视图动画全解
    从图库中选取图片设置给ImageView
    一张图认识安卓shape属性
    自定义Dialog(QQ头像选择弹出的对话框)
    Toolbar和menu使用
    LIB和DLL的区别与使用
    C++调用webservice
    夯实Java基础系列5:Java文件和Java包结构
  • 原文地址:https://www.cnblogs.com/wxhao/p/13636401.html
Copyright © 2020-2023  润新知