你的位置:首页 > 软件开发 > Java > 《Java从入门到放弃》JavaSE入门篇:网络编程(入门版)

《Java从入门到放弃》JavaSE入门篇:网络编程(入门版)

发布时间:2017-09-21 15:00:28
要进行网络编程,首先要搞清楚目的是什么。网络编程说简单点就是在网络上的计算机进行数据的交互。既然要进行数据交互,那就需要有一个发送方和一个接受方。按网络上的说法,就是一个攻一个受·当然,现阶段网上的电脑一般来说都是既接受数据,也能发送数据的,所以说这些电脑都是“插座型” ...

《Java从入门到放弃》JavaSE入门篇:网络编程(入门版)

要进行网络编程,首先要搞清楚目的是什么。

网络编程说简单点就是在网络上的计算机进行数据的交互。

《Java从入门到放弃》JavaSE入门篇:网络编程(入门版)

既然要进行数据交互,那就需要有一个发送方和一个接受方。

按网络上的说法,就是一个攻一个受·《Java从入门到放弃》JavaSE入门篇:网络编程(入门版)

当然,现阶段网上的电脑一般来说都是既接受数据,也能发送数据的,所以说这些电脑都是“插座型”的,进可攻,退可受!!!

好吧,还是使用专业点的名字吧:客户端/服务器

 

那么具体到两台电脑,它们是如何来交互数据的呢?请看下图:

《Java从入门到放弃》JavaSE入门篇:网络编程(入门版)


从步骤来分析:

一、服务器端程序

    1.1创建一个服务器套接字(ServerSocket),并绑定到指定端口。

    1.2侦听来自客户端的请求,如果接受到连接则返回套接字对象(socket)。

    1.3获得输入/输出流,也就是进行数据的接收或发送。

    1.4关闭套接字(socket)。

二、客户端程序

    2.1创建一个套接字,向服务器指定商品发送请求。

    2.2与服务器正确连接后开始数据的接收或发送。

    2.3关闭套接字。

 

步骤分析完了,接下来就是实施了。

服务器端代码如下:

123456789101112131415161718192021222324252627282930313233public class MyServer {    private static final int SERVER_PORT = 9527// 指定侦听端口     public MyServer() {        try {            ServerSocket ss = new ServerSocket(SERVER_PORT); // 创建服务器套接字            System.out.println("服务端已启动,正在等待客户端...");            Socket s = ss.accept(); // 侦听来自客户端的请求            InputStream in = s.getInputStream(); // 获得输入流,用来接收数据            OutputStream out = s.getOutputStream(); // 获得输出流,用来发送数据            byte[] buf = new byte[1024]; // 数据缓存            int len = in.read(buf); // 从输入流中读取数据            String strFromClient = new String(buf, 0, len);            System.out.print("来自客户端的信息>>");            System.out.println(strFromClient);            String strToClient = "我也很好!";            out.write(strToClient.getBytes()); // 往输出流中发送数据            // 关闭输入流和输出流            in.close();            out.close();            // 关闭通信套接字和服务器套接字            s.close();            ss.close();            System.out.println("服务端已关闭。");        catch (IOException e) {            e.printStackTrace();        }    }         public static void main(String[] args) {        MyServer ms = new MyServer();    }}

客户端代码如下:

12345678910111213141516171819202122232425262728293031public class MyClient {    private static final int SERVER_PORT = 9527;  //服务器的侦听端口    public MyClient() {        try {              //由于服务端也是运行在本机,所以创建本机的InetAddress对象            InetAddress address = InetAddress.getByName("localhost");            Socket s = new Socket(address, SERVER_PORT);  //向服务器侦听端口发出请求            System.out.println("客户端已启动。");            InputStream in = s.getInputStream();     //获得输入流,用来接收数据            OutputStream out = s.getOutputStream();  //获得输出流,用来发送数据            String strToServer = "你好!";            out.write(strToServer.getBytes());   //往输出流中发送数据            byte[] buf = new byte[1024];            int len = in.read(buf);              //从输入流中读取数据            String strFromServer = new String(buf, 0, len);              System.out.print("来自服务端的回答>>");            System.out.println(strFromServer);            in.close();out.close();  //关闭输入流和输出流            s.close();               //关闭通信套接字            System.out.println("客户端已关闭。");        catch (UnknownHostException nhe) {            System.out.println("未找到指定主机...");        catch (IOException ioe) {             ioe.printStackTrace();        }    }         public static void main(String[] args) {        MyClient mc = new MyClient();    }}

 

先运行服务器端

《Java从入门到放弃》JavaSE入门篇:网络编程(入门版)

 

再运行客户端,可以发现服务器端的内容发生了变化

《Java从入门到放弃》JavaSE入门篇:网络编程(入门版)

再切换到客户端的输出窗口

《Java从入门到放弃》JavaSE入门篇:网络编程(入门版)

客户端的输出内容如下:

《Java从入门到放弃》JavaSE入门篇:网络编程(入门版)

 

有兴趣的看官可以修改代码,让它变成可以从控制台反复输入文字来交互。研究得更深些的朋友,可以尝试发送文件。

网络编程最基本的内容到这儿就结束了,此处应有点赞!!!《Java从入门到放弃》JavaSE入门篇:网络编程(入门版)

 

 “软件思维”博客地址:51CTO博客园,感兴趣的小伙伴可以去看相关的其它博文。  

 

原标题:《Java从入门到放弃》JavaSE入门篇:网络编程(入门版)

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。