博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 核心技术Ⅱ--章四:网络
阅读量:4223 次
发布时间:2019-05-26

本文共 2295 字,大约阅读时间需要 7 分钟。

使用java程序连接网络

建立与主机的连接。

Socket s = new Socket("localhost",8080);

用这个方式建立与主机的连接,会一直堵塞下去,直到建立了到达主机的初始连接为止。改进方式:

Socket s = new Socket();s.connect(new InetSocketAddress(host,port),timeout);

1、因特网地址

使用java程序可以获得任意域名对应的IP地址。

public class InetAddressTest {    public static void main(String[] args) throws UnknownHostException {        //获取百度域名对应的主机IP        InetAddress[] addresses = InetAddress.getAllByName("www.baidu.com");        for(InetAddress address : addresses){            System.out.println(address.getHostAddress());        }        //获取本机IP        InetAddress address = InetAddress.getLocalHost();        System.out.println(address);    }}

结果:

119.75.216.20119.75.213.61lenovo-PC/172.20.51.173

2、搭建简易服务器

public class Server {    public static void startServer(int port) throws IOException{        //搭建服务监听port端口        ServerSocket sc = new ServerSocket(port);        while(true){            //获得客户端连接            Socket soc = sc.accept();            System.out.println("接入新连接:"+soc);            //多线程处理每一个客户端连接            new ClientHandler(soc).start();        }    }    public static void main(String[] args) throws IOException {        //启动服务        startServer(8989);    }static class ClientHandler extends Thread {    Socket soc = null;    public ClientHandler(Socket soc) {        this.soc = soc;    }    @Override    public void run() {        if(this.soc !=null){            //获得输入流与输出流            try(InputStream inStream = soc.getInputStream();                OutputStream outStream = soc.getOutputStream();){                Scanner in = new Scanner(inStream,"UTF-8");                //输出流自动刷新,不必使用flush方法                PrintWriter out = new PrintWriter(new OutputStreamWriter(outStream), true);                 out.println("Hello!enter BYE to exit");                boolean done = true;                while(done&&in.hasNextLine()){                    String line = in.nextLine();                    out.println(line);                    if(line.trim().equals("BYE")){                        done = false;                    }                }            } catch (IOException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }    }}}

效果:

启动一个命令行窗口,使用命令telnet localhost 8989连接服务器。

这里写图片描述

连接服务器后,你输入什么,屏幕上回显什么,直到你输入BYE,断开连接。

这里写图片描述

你可能感兴趣的文章
为什么不能建立引用数组?
查看>>
Union的一个知识点
查看>>
基类析构函数为虚函数的研究
查看>>
函数入栈出栈以及栈帧
查看>>
从RTTI谈C++的向下转型
查看>>
面试心得(BAT)
查看>>
Windows Server 2012 Web方式修改域用户密码-通过Remote Desktop Web实现
查看>>
华为USG5300 采用IKE安全策略方式建立IPSec隧道
查看>>
Centos7 nginx访问日志文件割接
查看>>
我是一条内存!
查看>>
OIM API Usage
查看>>
ubuntu14.04 git server setup
查看>>
SMACK简介
查看>>
CMakeLists.txt, pc, RPM spec Template for shared library
查看>>
python使用lxml解析命名空间xml
查看>>
cookie和session区别详解
查看>>
程序员失业第一步?斯坦福研究员用AI从编译器反馈中学习改Bug
查看>>
原创 | 电视广告流量预测中的“常识”陷阱,你掉进去了吗?
查看>>
DeepMind发布最新《神经网络中持续学习》综述论文!
查看>>
本科三篇顶会一作、超算竞赛冠军,2020清华本科特奖结果出炉
查看>>