网络编程简介

网络五层

1.应用层(http、ftp、smtp)报文message

2.传输层(tcp、udp)通过socket实现

3.网络层(ip协议)
不可靠,容易丢包

4.链路层
5.物理层

端口

端口范围:0~65535;
1. 公认端口:0~1023,一般不使用此范围的端口,可能与某些服务的端口冲突
2. 注册端口:1024~49151一般不使用。次端口可能被某些大公司的软件所使用
3. 动态和/或私有端口:49151~65535,随便用
4. 意义:区分不同的进程

服务端

//1.创建一个socket对象(ipv4,流式,tcp协议)
        Socket skConn = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        //2.绑定ip和监听端口
        IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("192.168.1.127"), 9999);
        skConn.Bind(endPoint);
        //3.开始监听队列为5个
        skConn.Listen(5);
        Console.WriteLine("开始监听");
        //4.一旦开始监听以后,如果有客户端链接,就需要接收客户端的链接
        //sk1才是与特定用户通信的socket
        Socket sk1 = skConn.Accept();//这句话会阻塞线程
        Console.WriteLine("客户端:{0}", sk1.RemoteEndPoint.ToString());
        //设置一个缓冲区
        byte[] buffers = new byte[1024 * 1024 * 5];//5MB
        //5.接受客户端发来的消息
        //返回值就是实际接受到的个数
        int byte_count = sk1.Receive(buffers);//用来等待接受客户端发来的消息,这个方法也会阻塞线程
        //6把用户发送过来的数据转换为字符串输出
        String msg = System.Text.Encoding.UTF8.GetString(buffers, 0, byte_count);
        Console.WriteLine(msg);
        Console.ReadKey();

客户端

 //1.创建一个socket
        Socket skClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        //2.链接对应的服务器
        skClient.Connect("192.168.1.127", 9999);
        //3.向服务器发送一个消息
        string msg = "你好";
        byte[] buffers = System.Text.Encoding.UTF8.GetBytes(msg);
        skClient.Send(buffers);
        Console.WriteLine("发送完毕");
        Console.ReadKey();
  1. 杂记
    1. asp.net应用程序的生命周期就是httpApplication对象的ProcessRequest()方法的的调用的过程
posted on 2017-04-06 18:24  NE_STOP  阅读(0)  评论(0编辑  收藏  举报  来源