2021-07-25

//服务器
Console.WriteLine(“服务器开始运行了…\n”);
Socket m_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//tcp协议
//bind绑定一个端口 any是接受任意段的ip
IPEndPoint ipEnd = new IPEndPoint(IPAddress.Any, 2019);
m_socket.Bind(ipEnd);//绑定端口
//listen 端口的接听
m_socket.Listen(10);//最多只能10个等待队列 就像是排队只能排10个人
Console.WriteLine(“等待一个接入…”);

        Socket client_socket = m_socket.Accept();//如果有新的客户端链接这里,创建一个新的socket去链接

        IPEndPoint ipEndClient = (IPEndPoint)client_socket.RemoteEndPoint;//获取客户端的链接信息

        Console.WriteLine("链接的客户端的地址:{0},端口:{1}",ipEndClient.Address,ipEndClient.Port);//输出链接的ip地址 端口
        
        //send 给客户端发送一个包 是字节形式的发送
        byte[] sendBuf = new byte[1024];
        string msg = "welcome!";
        //
        sendBuf = Encoding.Unicode.GetBytes(msg);//将msg(string)转换为byte因为数据流传输的数据是byte,并存储到sendBuf
        client_socket.Send(sendBuf,sendBuf.Length,socketFlags:SocketFlags.None);
        
        //receive 收到客户端的包时候要解析一下
        byte[] recvBuf = new byte[1024];
        int reclen = client_socket.Receive(recvBuf);//获取这个数据包的长度
        string recvMsg = Encoding.Unicode.GetString(sendBuf, 0, reclen);//将接受到的byte类型的数据转换为string
        Console.WriteLine("收到的信息是:{0}",recvMsg);

        Console.WriteLine("断开链接{0}",ipEndClient.Address);
        
        //最后需要关闭
        client_socket.Close();
        m_socket.Close();
        Console.ReadKey();
上一篇:CSS布局-三栏布局,左右宽度300px,中间自适应


下一篇:BZOJ.4543.[POI2014]Hotel加强版(长链剖分 树形DP)