栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java网络编程(一)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java网络编程(一)

java网络编程 1.InetAddress类 1.1说明:代表IP地址 1.2常见API:

通过静态方法获得InetAddress实例:
getByName(String host):根据主机名称获得对应的InetAddress对象。
getByAddress(byte[] addr):根据原始IP地址获得对应对象。
getLocalHost():得到本地的InetAddress对象
通过实例的方法获得对应的IP地址,及主机名称
String getHostName():得到此IP地址的主机名
String getCanonicalHostName():得到此IP地址的全限定域名。
String getHostAddress():得到这个对象对应的IP地址的字符串。

public static void main(String[] args) {
        try {
            InetAddress ip = InetAddress.getLocalHost();
            System.out.println("得到次ip地址的主机名" + ip.getHostName());
            System.out.println("得到次ip地址字符串" + ip.getHostAddress());
            System.out.println("得到次ip地址全限定域名" + ip.getCanonicalHostName());
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
    }
2.URL 2.1说明:

URL(Uniform Resource Locator)对象代表统一资源定位器,它是指互联网“资源”的指针。资源可以是简单的文件或目录,也可以his对更复杂对象的引用,比如对数据库或搜索引擎的查询。
URL可由 协议名,主机,端口和资源组成
protocol://host:port/resoureName

2.2常见API

URL类提供了多个构造器用于创建URL对象,通过实例对象访问URL对应的资源
String getFile():获取该URL的资源名。
String getHost():获取该URL的主机名。
String getPath():获得该URL的路径部分。
int getPort():获得该URL的端口号。
String getProtocol():获得该URL的协议名称。
String getQuery():获得该URL查询字符串部分。

如何将URL和IO流连接起来:
URLConnection openConnection():返回一个URLConnection对象,它代表了与URL所引用的远程对象的连接。
InputStream getInputStream:通过这个连接得到一个输入流。
InputStream openStream():打开与此URL的连接,并返回一个用于读取该URL资源的InputStream。

public static void main(String[] args) {
        try {
            //1.创建一个URL实例
            URL url =new URL("http://www.baidu.com");
            //2.建立一个与URL所引用的远程对象的连接
            URLConnection urlConn=url.openConnection();
            //3.通过连接得到一个IO流
            InputStream is = urlConn.getInputStream();
            //4.缓冲流
            BufferedReader br=new BufferedReader
                    (new InputStreamReader(is));
            String s;
            while ((s=br.readLine())!=null) {
                System.out.println(s);
            }
            br.close();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
3.Socket编程 3.1TCP/IP协议

使用TCP/IP协议开发的应用程序,一般会分为服务器端和客户端两部分。

3.2使用ServerSocket进行服务端开发

服务器端的主要功能是侦听服务器的某一端口,接受客户端的请求,与客户端进行数据交换(接收客户端数据并向客户端发送数据)。
Java使用ServerSocket类实现端口侦听,ServerSocket实例的accept方法用来等待并接受客户端的请求,该方法在运行时会阻塞当前程序直到连接建立为止,一旦连接建立成功,accept方法会返回一个Socket类的实例,通过该实例的getInputStream和getOutputStream方法接收或向客户端发送数据。最后调用ServerSocket实例或Socket实例的close方法关闭连接。

public static void main(String[] args) {
        //1.ServerSocket类用来实现端口的监听,其实例有accept()方法,等待并接收客户端的请求,
        //接收到请求,返回一个Socket实例,若无接收则一直阻塞程序
        ServerSocket serverSocket=null;
        //2.Socket实例的getInputStream方法和getOutStream方法得到接收和输出的流
        Socket socket = null;
        BufferedReader br = null;
        try {
            serverSocket=new ServerSocket(3333);
            System.out.println("服务器正在等待客户端连接。。。。。");
            //若无连接,阻塞
            socket=serverSocket.accept();
            br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            System.out.println("服务器已经接收到了客户端请求");
            String s=null;
            while ((s = br.readLine())!=null) {
                System.out.println(s);;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            while (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            while (serverSocket != null) {
                try {
                    serverSocket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }

            }while (socket != null); {
                try {
                    socket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }
3.3使用Socket进行客户端开发

客户端代码不需要使用ServerSocket类,也不需要使用Socket看的accept方法获取Socket实例,而是通过传入服务器的IP地址和端口两个参数来实例化Socket

public static void main(String[] args) {

        Socket socket = null;
        BufferedWriter bw = null;
        try {
            //得到本地IP
            InetAddress ip = InetAddress.getLocalHost();
            //1.建立Socket实例,传IP地址及端口
            socket = new Socket(ip.getHostAddress(), 3333);
            //2.建立缓存输出流
            bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
            //3.写入输入
            bw.write("明年今日");
            //换行
            bw.newline();
            bw.write("今年明日");
            bw.newline();
            bw.flush();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (socket != null) {
                try {
                    socket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (bw != null) {
                try {
                    bw.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/460153.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号