初涉Java Socket 编程!!!!

InetAddress获取网络上的硬件对象(IP地址代表的对象和主机名)

InetAddress address=getAllByName(String host)//根据主机名返回系统配置上的ip地址所组成的数组
InetAddress address=getByAddress( byte[ ] addr)//通过原始IP地址(以字节形式的ip byte[ ]数组)返回对象
InetAddress address=getAddress(String host, byte[] addr)//根据主机名和IP地址获取Inet对象
InetAddress address=getByName( String host)//通过主机名字获取对象

ULR统一资源定位符 获取一个URL 对象

URL url =new URL(String spac)//通过一个URL路径获取一个对象
URL url = new URL(URL context, String spac)//通过一个根url(首页)对象获取一个子url(首页下的分支)

通过URl 对象获取网络资源

    try {
            URL url=new URL("http://www.baidu.com");
            InputStream openStream = url.openStream();//获取一个输入流对象
            //将字节流装换成字符流
            InputStreamReader isr=new InputStreamReader(openStream,"utf-8");
            //将字符流转换成字符缓冲流
            BufferedReader br=new BufferedReader(isr);

            String data = br.readLine();
            while(data!=null){
                System.out.println(data);
                
                data=br.readLine();
            }
        } catch (MalformedURLException e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        } catch (IOException e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        }

ServerSocket (服务器)与 Socket(客户端)实现通信

image.png
image.png

ServerSocket JAVA 代码

        try {
            //声明一个绑定到特定端口的ServerSocket对象
            ServerSocket servSocket=new ServerSocket(8088);
            //等待客户端连接,及获取一个客户端Socket对象
            Socket socket = servSocket.accept();
            InputStream is = socket.getInputStream();//获取字节输入流
            InputStreamReader isr=new InputStreamReader(is);//将字节流转换成字符流
            BufferedReader br=new BufferedReader(isr);//为字节流添加缓冲
            String message=null;//存储获取客户端信息
            while((message=br.readLine())!=null){
                System.out.println("客户端:"+message);
            }
            
        } catch (IOException e) {
            e.printStackTrace();
        }

Socket (Client ) JAVA 代码

try {
            //创建绑定了端口的socket对象(指定服务器)
            Socket socket=new Socket("localhost", 8088);
            //获取输出流对象向服务器发送数据
            OutputStream os = socket.getOutputStream();
            //将输出流转换成打印流
            PrintWriter pw=new PrintWriter(os);
            pw.write("Hello Server!");
            pw.flush();//刷新缓存区
            //关闭资源
            socket.shutdownOutput();
            os.close();
            pw.close();
            socket.close();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

TIPS:ServerSocket必须先运行于Socket(Client)。

你可能感兴趣的:(初涉Java Socket 编程!!!!)