网络编程简介
网络五层
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();
- 杂记
- asp.net应用程序的生命周期就是httpApplication对象的ProcessRequest()方法的的调用的过程
本文来自博客园,作者:NE_STOP,转载请注明原文链接:https://www.cnblogs.com/alineverstop/p/18004729