zoukankan      html  css  js  c++  java
  • socket

    Server:

    class Program

    {
        static void Main(string[] args)
        {
            Socket listenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);  //新建socket
            IPEndPoint ep = new IPEndPoint(IPAddress.Parse("127.0.0.2"), 8888);
            listenSocket.Bind(ep);  //绑定期监听主机IP和端口号
            listenSocket.Listen(0);  //最多可容纳的等待接收的传入连接数

            while (true)
            {
                if (listenSocket.Poll(-1, SelectMode.SelectRead))  //在指定的时间段内阻止执行,负数表示无限期的等待响应; 如果socket可读
                {
                    Socket mySocket = listenSocket.Accept();  //提取第一个等待的请求,返回一个新的socket
                    byte[] bytes = new byte[256];
                    mySocket.Receive(bytes);  //接收socket中的数据
                    Console.WriteLine(string.Format(Encoding.UTF8.GetString(bytes) + "\r\n"));

                    byte[] msg = Encoding.UTF8.GetBytes("This is a test S->C" + DateTime.Now.ToString());
                    mySocket.Send(msg);  //服务器发送返回信息
                    mySocket.Shutdown(SocketShutdown.Both);  //关闭socket的发送和接收
                    mySocket.Close();
                }
            }


            //TcpListener server = null;
            //try
            //{
            //    server = new TcpListener(IPAddress.Parse("127.0.0.1"), 13000);
            //    server.Start();
            //    Byte[] bytes = new Byte[256];
            //    String data = null;

            //    int j = 0;
            //    while (j < 2)//只接收两个请求。用true则无此限制
            //    {
            //        j = j + 1;
            //        TcpClient client = server.AcceptTcpClient();  //接收请求的客户端
            //        data = null;
            //        NetworkStream stream = client.GetStream();  //得到客户端的stream

            //        int i;
            //        while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)  //读取数据到bytes
            //        {
            //            data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
            //            Console.WriteLine(DateTime.Now.ToString() + " Received: " + data + "\r\n");

            //            data = data.ToUpper() + DateTime.Now.ToString();
            //            byte[] msg = System.Text.Encoding.ASCII.GetBytes(data);

            //            stream.Write(msg, 0, msg.Length);  //写数据,回发操作
            //            Console.WriteLine(" Sent back: " + data + "\r\n");
            //        }
            //        client.Close();
            //    }
            //}
            //catch (SocketException ex)
            //{
            //    Console.WriteLine(ex.ToString());
            //}
            //finally
            //{
            //    server.Stop();
            //}
        }

    }

    Client:

    class Program
    {
        static void Main(string[] args)
        {
            byte[] msg = Encoding.UTF8.GetBytes("This is a test C->S" + DateTime.Now.ToString());
            byte[] bytes = new byte[256];

            Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);  //新建socket
            s.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.2"), 8888));  //连接主机/端口号

            int i = s.Send(msg);  //发送消息,返回消息字节数
            Console.WriteLine(string.Format("Sent {0} bytes.", i));

            i = s.Receive(bytes);  //接收服务器返回的消息
            Console.WriteLine(string.Format(Encoding.UTF8.GetString(bytes)));

            s.Close();

            
            //try
            //{
            //    TcpClient client = new TcpClient("127.0.0.1", 13000);
            //    NetworkStream stream = client.GetStream();  //得到client的stream,用来发送或接收data

            //    string message = " test data c->s ";
            //    Byte[] data = System.Text.Encoding.ASCII.GetBytes(message);  //转成二进制数据
                
            //    stream.Write(data, 0, data.Length);  //往stream里写入要发送的数据
            //    Console.WriteLine(DateTime.Now.ToString() + "Sent:" + message + "\r\n");

            //    data = new Byte[256];
            //    String responseData = String.Empty;

            //    Int32 bytes = stream.Read(data, 0, data.Length);  //读取第一组从服务器端返回的数据
            //    responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);  //转成字符串数据
            //    Console.WriteLine(DateTime.Now.ToString() + "Received:" + responseData + "\r\n");

            //    stream.Close();  //关闭stream
            //    client.Close();  //关闭客户端
            //}
            //catch (ArgumentNullException ex)
            //{
            //    Console.WriteLine(ex.ToString());
            //}
            //catch (SocketException ex)
            //{
            //    Console.WriteLine(ex.ToString());
            //}
        }
    }

  • 相关阅读:
    第三讲:增长全局观
    搭建安卓环境
    ~~
    天气阴
    天气晴
    Spark性能优化指南——高级篇
    Ceph Jewel 10.2.3 环境部署
    《你只是看起来很努力》--读书笔记
    博客园基础环境配置
    Spark 1.3.0 单机安装
  • 原文地址:https://www.cnblogs.com/vipcjob/p/1717423.html
Copyright © 2011-2022 走看看