zoukankan      html  css  js  c++  java
  • java网络编程基础

    1. UDP

    DatagramSocket类:

    1. send()与receive()方法
    2. 绑定一个IP和Port

    DatagramPacket类:

    1. 集装箱机制:封装数据
    2. 地址标签:目的地IP+目的地Port

    接收方必须先于发送方运行

    import java.net.*;
    public class send//发送端
    {
    	public static void main(String [] args) throws Exception
    	{
    		DatagramSocket ds=new DatagramSocket();
    		String str="hello world";
    		DatagramPacket dp=new DatagramPacket(str.getBytes(),str.length(),
    				InetAddress.getByName("127.0.0.1"),3000);
    		
    		System.out.println("Send: 准备发送信息");
    		ds.send(dp);
    		System.out.println("Send: 发送信息结束");				
    		ds.close();
    	}
    }
    
    import java.net.*;
    public class receive//接收端
    {
    	public static void main(String[] args) throws Exception
    	{
    		DatagramSocket	ds=new DatagramSocket(3000);
    		byte [] buf=new byte[1024];
    		DatagramPacket dp=new DatagramPacket(buf,1024);
    		
    		System.out.println("Recv: 我在等待信息");
    		ds.receive(dp);//阻塞,等待发送端连接
    		System.out.println("Recv: 我接收到信息");
    		String strRecv=new String(dp.getData(),0,dp.getLength()) +
    		" from " + dp.getAddress().getHostAddress()+":"+dp.getPort(); 
    		ds.close();
    	}
    }
    

    2. TCP

    TCP协议:有链接、保证可靠的无误差通讯:

    1. 服务器:创建一个ServerSocket,等待连接
    2. 客户机:创建一个Socket,连接到服务器
    3. 服务器:ServerSocket接收到连接,创建一个Socket和客户的Socket建立专线连接,后续服务器和客户机的对话(这一对Socket)会在一个单独的线程(服务器端)上运行。
    4. 服务器的ServerSocket解除与客户端连接,处于阻塞状态,继续等待连接,返回第一步。

    ServerSocket:等待响应的服务器端口:

    1. 需要绑定port,IP

    Socket:运输通道:

    1. 客户端需要绑定服务器的IP和Port
    2. 客户端往Socket输入流写入数据,送到服务端
    3. 客户端从Socket输出流取服务器端过来的数据
    4. 同一个通道,服务端的输出流就是客户端的输入流;服务端的输入流就是客户端的输出流
    import java.net.*;
    import java.io.*;
    public class TcpServer
    {
    	public static void main(String [] args) 
    	{
    		try
    		{
    			ServerSocket ss=new ServerSocket(8001); //服务端Socketserver在8001端口监听
    			Socket s=ss.accept();                   //阻塞,等到有客户端Socket连接new Socket()
    			System.out.println("i am server");
    			//InputStream ips=s.getInputStream();     //使用socket.getInputStream()获取输入流
    			OutputStream ops=s.getOutputStream();   //使用socket.getOutputStream()获取输出流
    			ops.write("Hello, Client!".getBytes());  //输出流write()
    			//ips.close();          
    			ops.close();
    			s.close();
    			ss.close();
    		}
    		catch(Exception e)
    		{
    			e.printStackTrace();
    		}
    	}
    }
    
    import java.net.*;
    import java.io.*;
    
    public class TcpClient {
    	public static void main(String[] args) {
    		try {
    			Socket s = new Socket(InetAddress.getByName("127.0.0.1"), 8001); //建立一个socket连接
    			System.out.println("i am client");
    			InputStream ips = s.getInputStream();    //使用socket.getInputStream()获取输入流
    			BufferedReader br = new BufferedReader(new InputStreamReader(ips));//包装
    
    			System.out.println("Server said: " + br.readLine());//使用BufferRead的readline()读取避免乱码
    			br.close();
    			s.close();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    }
    
  • 相关阅读:
    强制数据类型转换之Number类型
    强制类型转换之String类型
    数据类型之字符串类型与Number类型
    favicon.ico是什么?
    什么是自幂数?
    JavaScript基础之变量的自增与自减
    CMD 命令
    那些看完很有同感的语句
    HTML5 canvas 元素
    HTML的多媒体属性
  • 原文地址:https://www.cnblogs.com/innndown/p/12378387.html
Copyright © 2011-2022 走看看