想了解java中的网络编程吗?想了解Java网络编程(一):初体验?? 吗?......本文带你一探究竟。
1.Java网络编程(一):初体验
有同学反应,光写数据结构太枯燥了,能不能搞点有趣的东西。嗯,我决定把网络这一部分提到前边来,做一点有趣的东西。这节课,我们体验一下Java网络编程。Java语言被越来越多地应用在网络环境下,偏重于服务端的开发,还有分布式系统,软件定义硬件功能的场景等等。这些场景下,都非常依赖于语言的网络开发的能力。我们今天就尝试使用一下Java的网络编程。Java的网络编程的接口大多数位于 和 java.nio 这两个package里,掌握这两个package是Java程序员必备的基础技能。服务端连接网络的过程和打电话的过程可以进行类比。比如,在手机网络中,每一个手机都有一个手机号,我们知道了某个提供服务的号码(比如外卖电话,银行电话等),拨通这个号码,就可以进行通话了。计算机网络也差不多,在计算机网络中,每个计算机上的每个网卡,都会有一个号码相互识别,这个号码在不同的场景下,会有不同的表现,比如,网址:知乎 - 与世界分享你的知识、经验和见解,再比如IP地址,再比如mac地址。后面我们会一点点讲解这些地址分别在什么场景下使用的。现在我们只需要知道一个服务端是要有一个地址的。而在我们的今天的场景下,这个地址(可以类比手机号码)就是IP地址。不多说了,先上代码,跑起来,大家就明白了。public class Server { public static void main(String args[]) throws { ss = new (8080); Socket conn = ss.accept(); br = new (new (conn.())); bw = new (new (conn.())); String s = br.readLine(); while (s != null) { System.out.println(s); bw.write(s.() + "\n"); bw.flush(); s = br.readLine(); } br.close(); bw.close(); conn.close(); } } 可以看到服务端在8080端口上开启了一个,等待连接。大家可以单步调试一下,看看当调用到accept的时候会发生什么情况。然后就是创建一个Reader用于从网络上读数据,一个Writer向网络上写数据。读进来的一行,把它转成大写,再发回到客户端。客户端也把代码放上来public class Client { public static void main(String args[]) throws { Socket conn = new Socket("127.0.0.1", 8080); br = new (new (conn.())); bw = new (new (conn.())); bw.write("hello\n"); bw.flush(); String s = br.readLine(); System.out.println(s); bw.write("world\n"); bw.flush(); s = br.readLine(); System.out.println(s); br.close(); bw.close(); conn.close(); } } 和服务端对应的,客户端创建一个Socket,这个 Socket 在构造的时候就发起向服务端的连接。连接了以后,也创建一个 Reader,一个 Writer。接着向服务端发送了两个小写字符串。先运行服务端,再运行客户端,我们可以看到这样的结果:问题今天就先稍微体验一下吧。这里涉及到socket,ip 地址, 端口号(程序中是8080)这些到底有什么关系?在Java虚拟机里到底是如何实现的?这些问题,我们会在接下来的课程里慢慢解释。今天的作业,从控制台上输入一个字符串,然后发送到服务端。上一节课:数据结构(七):二叉树的删除和应用举例下一节课:分层网络协议目录:课程目录
上述文章了解到关于Java网络编程(一):初体验?? ,让我们对java中的网络编程 有一个直观的认知。我们发现,作为一个优秀的Java程序员是多么的自豪。