网络编程基础
1.网络编程: 多台计算机通过物理设备(网线,wifi等)链接起来,形成了一个网络结构。
2.网络编程的三要素:
IP地址:即计算机在网络中的编号.
端口号:即程序在计算机中的一个编号。0--65535,1024之前的端口号禁止使用。
网络协议:分为UDP协议和TCP协议
UDP协议:不需要建立稳定的链接,不可靠,安全性低,但效率高,大小有限制(64k)。
TCP协议:必须建立连接,安全性高,速度慢,效率低,大小无限制。
3.InetAddress:java中用来表示ip地址
static InetAddress getByName(String host); //host可以是主机名,也可以是Ip地址
String getHostAddress(); //返回 IP 地址字符串(以文本表现形式)。
String getHostName(); //获取主机名。
static InetAddress getLocalHost(); //获取本机的ip地址
4.网络编程UDP协议-发送端
步骤:
1.创建发送端Socket对象(DatagramSocket)。因为是发送端的Socket,所以不需要指定端口号
2.准备数据,并且打包。DatagramPacket
3.发送数据
4.释放资源
案例:
1 //1.创建发送端Socket对象(DatagramSocket)。因为是发送端的Socket,所以不需要指定端口号 2 DatagramSocket ds = new DatagramSocket(); 3 //2.准备数据,并且打包。DatagramPacket 4 //准备数据 5 byte[] bys = "hello udp,im comming!".getBytes(); 6 //指定接收方(收件人)的ip地址 7 InetAddress address = InetAddress.getByName("127.0.0.1"); 8 //端口号 9 int port = 8888; 10 DatagramPacket dp = new DatagramPacket(bys,bys.length,address,port); 11 //3.发送数据 12 ds.send(dp); 13 //4.释放资源 14 ds.close();
5.网络编程UDP协议-接收端
步骤:
1.创建接收端的Socket对象(DatagramSocket)。因为是接收端,所以要明确自己是谁(端口)
2.准备容器。DatagramPacket
3.接收数据。签收
4.解析
5.释放资源
案例:
1 //1.创建接收端的Socket对象(DatagramSocket)。因为是接收端,所以要明确自己是谁(端口),该端口号必须和发送端的完全一致。 2 DatagramSocket ds = new DatagramSocket(8888); 3 //2.准备容器。DatagramPacket 4 //byte[] bys = new byte[1024]; 5 //DatagramPacket dp = new DatagramPacket(bys,bys.length); 6 DatagramPacket dp = new DatagramPacket(new byte[1024],1024); 7 //3.接收数据。签收。如果没有人发送数据,则程序在这里一直等待,直到有人发送数据。 8 ds.receive(dp); 9 //4.解析。当数据被接收之后,都放在了DatagramPacket中,所以,所谓的解析数据,其实就是解析DatagramPacket 10 InetAddress address = dp.getAddress(); //获取发送方的ip地址 11 int port = dp.getPort(); //获取发送方的端口号 12 byte[] data = dp.getData(); //获取发送的数据 13 int length = dp.getLength(); //获取具体收到数据的长度 14 System.out.println("sender ---> " + address.getHostAddress()); 15 System.out.println(new String(bys,0,length)); 16 System.out.println(port); 17 //5.释放资源 18 ds.close();
6.网络编程TCP协议-客户端
步骤:
1.创建Socket对象。指定“服务端”的ip地址和端口号
2.传输数据
如果给“服务端”发消息,用输出流写。
如果接收“服务端”发送的数据,则用输入流读。
3.释放资源
案例:
1 //1.创建Socket对象。指定“服务端”的ip地址和端口号 2 Socket s = new Socket("127.0.0.1", 10010); 3 // 给服务端发消息 4 OutputStream os = s.getOutputStream(); 5 os.write("hello!!!".getBytes()); 6 os.close(); 7 8 // 接收“服务端”发送过来的数据 9 InputStream is = s.getInputStream(); 10 byte[] bys = new byte[1024]; 11 int len = is.read(bys); 12 System.out.println(new String(bys, 0, len)); 13 14 //3.释放资源 15 s.close();
6.网络编程TCP协议-服务端
步骤:
1.创建ServerSocket对象,指定端口号
2.调用accept()方法获取Socket对象。如果有客户端访问,则该方法执行,得到一个Socket。如果没有客户端访问一直等待。
3.传输数据
如果给“客户端”发消息,用输出流写。
如果接收“客户端”发送的数据,则用输入流读。
4.释放资源
案例:
1 //1.创建ServerSocket对象,指定端口号 2 ServerSocket ss = new ServerSocket(10010); 3 //2.调用accept()方法获取Socket对象。如果有客户端访问,则该方法执行,得到一个Socket。如果没有客户端访 问,就一直等待。 4 Socket s = ss.accept(); 5 //接收“客户端”发送过来的数据 6 InputStream is = s.getInputStream(); 7 byte[] bys = new byte[1024]; 8 int len = is.read(bys); 9 System.out.println(new String(bys,0,len)); 10 11 //向“客户端”发送数据 12 OutputStream os = s.getOutputStream(); 13 os.write("hello!!!".getBytes()); 14 os.close(); 15 16 s.close();
上一篇: Python虚拟环境
下一篇: linq用法整理