简单介绍Java 网络程序
创始人
2024-08-02 10:31:38
0

网络程序,一般是指带网络接连或需要网络接连才能使用的或能脱机和联机使用的新型智能程序。Java在网络编程这个地方做的很好,java的主要目的也是为了网络而生的,它能方便的访问网络上的资源。我们这节课来介绍网络通讯的两种机制:URL通信机制,Socket通信机制。

URL表示了Internet上一个资源的引用或地址。Java网络应用程序也是使用URL来定位要访问的Internet的资源。在jdk里面java.net.URL也是一个类,它来封装URL的一些细节。目前大家可以把URL理解为网址,http://www.100jq.com/default.aspx 这就是个URL。http是协议名(超文本传输协议)用“://”隔开www.100jq.com 是主机名。Default.aspx是文件名。它的端口号没有写,默认是80。

实践:

  1. import java.net.*;  
  2. public class ParseURL {  
  3. public static void main(String[] args) throws MalformedURLException{  
  4. URL url = new URL("http://www.100jq.com:45175/default.aspx");  
  5. System.out.println("协议是 "+url.getProtocol());  
  6. System.out.println("主机是 "+url.getHost());  
  7. System.out.println("文件名是 "+url.getFile());  
  8. System.out.println("端口号是 "+url.getPort());  
  9. }}  
  10. /*  
  11. URL这个对象中提供了很多方法像是  
  12. getProtocol()  
  13. getHost()  
  14. getFile()  
  15. getPort()  
  16. */ 

我们可以通过URL对文件或资源读取,也可以通过URLConnection读取,也可以通过这个写入数据限于cgi脚本。

实践:

  1. import java.net.*;  
  2. import java.io.*;  
  3. public class URLConnectionReader {  
  4. public static void main(String[] args) throws IOException {  
  5. URL google = new URL("http://www.100jq.com/");  
  6. URLConnection g = google.openConnection();  
  7. BufferedReader in = new BufferedReader(new InputStreamReader(g.getInputStream()));  
  8. String inputLine;  
  9. while ((inputLine=in.readLine())!=null)  
  10. System.out.println(inputLine);  
  11. in.close();  
  12. }  

URL和URLConnection类提供了较高层次的网络访问。有时候需要进行较低层次的访问。编写C/S模型的程序时,就要使用Socket通信机制了。因为在网络上不一定非得访问文件。

实践:

  1. //先写个客户端的应用  
  2. import java.net.*;  
  3. import java.io.*;  
  4. public class SimpleClient {  
  5. public static void main(String args[]) {  
  6. try {  
  7. // 在5432端口打开服务器连接  
  8. // 在这里用localhost与127.0.0.1是一个意思  
  9. Socket s1 = new Socket("127.0.0.1", 5432);   
  10. // 对这个端口连接一个reader,注意端口不能够占用别的  
  11. BufferedReader br = new BufferedReader(  
  12. new InputStreamReader(s1.getInputStream()));  
  13. // 读取输入的数据并且打印在屏幕上  
  14. System.out.println(br.readLine());  
  15. //当完成时关闭流和连接  
  16. br.close();  
  17. s1.close();  
  18. } catch (ConnectException connExc) {  
  19. System.err.println("Could not connect to the server.");  
  20. } catch (IOException e) {  
  21. // ignore  
  22. }}}  
  23. //这是服务端的应用  
  24. import java.net.*;  
  25. import java.io.*;  
  26. public class SimpleServer {  
  27. public static void main(String args[]) {  
  28. ServerSocket s = null;  
  29. // 注册服务端口为5432  
  30. try {  
  31. s = new ServerSocket(5432);  
  32. } catch (IOException e) {  
  33. e.printStackTrace();  
  34. }  
  35. // 运行监听器并接收,永远循环下去。因为服务器总要开启的  
  36. while (true) {  
  37. try {  
  38. // 等待一个连接的请求  
  39. Socket s1 = s.accept();  
  40. // 得到端口的输出流  
  41. OutputStream s1out = s1.getOutputStream();  
  42. BufferedWriter bw = new BufferedWriter(  
  43. new OutputStreamWriter(s1out));  
  44. // 发送一个字符串  
  45. bw.write("百家拳软件项目研究室欢迎您!/n");  
  46. // 关闭这个连接, 但不是服务端的socket  
  47. bw.close();  
  48. s1.close();  
  49. } catch (IOException e) {  
  50. e.printStackTrace();  
  51. }}}} 

 

执行这个程序和其它的不太一样,先用javac将两个文件编译之后。然后敲start开启另一个窗口。用start命令开启的窗口继承了原来窗口的特性。

接着在原来的窗口上执行服务端程序java SimpleServer.在新窗口中执行java SimpleClient 就会看到结果了。注意如果如果在启动服务端的时候抛出bindException则说明5432这个端口已经被别的程序占用着,改成别的端口号就可以了。通常选用端口的时候,其数字最好不要小于1024,1024一下的端口很多都是专用的端口。

希望通过本文的介绍,能给你带来帮助。

【编辑推荐】

  1. 详细介绍JAVA和C++区别
  2. 详细介绍Java EE开发四大常用框架
  3. 分析JAVA的Random类
  4. 谈java web server与io形式
  5. 谈JAVA静态载入的两种方式

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...