网络编程(4)B/S
2016-08-14 21:01
99 查看
C/S
与 B/S
☆ C/S ( Client/Server )
客户端和服务端的特点
1、客户端和服务端的软件都需要程序员进行编写。
2、客户端维护起来较为麻烦。
3、客户端的存在可以将一部分运算分离到客户端来运行,减轻了服务器端的压力。
☆ B/S ( Browse/Server )
浏览器和服务端的特点
1、客户端不用程序员编写,直接使用系统中具备的浏览器软件作为客户端即可。程序员只需要编写服务器端就OK了。
2、维护起来也很容易,因为只要维护服务器即可。
3、所有的运算都在服务器端,相对压力较大。
![](http://img.blog.csdn.net/20160814210320508?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
编程练习
(了解B/S模式的底层socket通讯原理)
1、自定义一个服务器,接收浏览器发来的信息。显示浏览器发送了什么信息,并向浏览器发送简单的网页信息。
Myserver类
2、模拟一个浏览器客户端向服务器发请求,接收并显示响应消息。
MyBrowse类
3、网络蜘蛛,收集网页中的邮箱地址信息。
SpiderDemo类:
与 B/S
☆ C/S ( Client/Server )
客户端和服务端的特点
1、客户端和服务端的软件都需要程序员进行编写。
2、客户端维护起来较为麻烦。
3、客户端的存在可以将一部分运算分离到客户端来运行,减轻了服务器端的压力。
☆ B/S ( Browse/Server )
浏览器和服务端的特点
1、客户端不用程序员编写,直接使用系统中具备的浏览器软件作为客户端即可。程序员只需要编写服务器端就OK了。
2、维护起来也很容易,因为只要维护服务器即可。
3、所有的运算都在服务器端,相对压力较大。
编程练习
(了解B/S模式的底层socket通讯原理)
1、自定义一个服务器,接收浏览器发来的信息。显示浏览器发送了什么信息,并向浏览器发送简单的网页信息。
Myserver类
<span style="font-family:Times New Roman;font-size:14px;">package cn.huncu.net.bs; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintStream; import java.io.UnsupportedEncodingException; import java.net.ServerSocket; import java.net.Socket; public class MyServer { public static void main(String[] args) { try { ServerSocket ss=new ServerSocket(80); while (true) { Socket s = ss.accept(); System.out.println(s.getInetAddress().getHostAddress()+"已连接........"); new Thread(new ThreadDemo(s)).start(); } } catch (IOException e) { e.printStackTrace(); } } } class ThreadDemo implements Runnable{ private Socket s=null; public ThreadDemo(Socket s) { this.s=s; } @Override public void run() { try { InputStream in = s.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader( in, "gbk")); // String str = null; // while ((str = br.readLine()) != null) { // System.out.println(str); // } char cbuf[]=new char[1024]; int len=br.read(cbuf); System.out.println(new String(cbuf, 0, len)); OutputStream out = s.getOutputStream(); PrintStream ps = new PrintStream(out, true); ps.println("<html><body>"); ps.println("欢迎光临....<br/>"); ps.println("<font size=10 color=green>这是我用Java程序给你发的网页,比较简单,请多包涵...</font>"); ps.println("<table border=1 bordercolor='red' >"); ps.println("<tr> <td>Jack</td> <td>25</td> </tr>"); ps.println("<tr> <td>Tom</td> <td>24</td> </tr>"); ps.println("</table>"); ps.println("</body></html>"); s.close(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } </span>
2、模拟一个浏览器客户端向服务器发请求,接收并显示响应消息。
MyBrowse类
<span style="font-family:Times New Roman;font-size:14px;">package cn.hncu.net.bs; import java.io.IOException; import java.io.InputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.Socket; import java.net.UnknownHostException; public class MyBrowse { public static void main(String[] args) throws IOException { Socket s = new Socket("www.hncu.net", 80); PrintWriter out = new PrintWriter(new OutputStreamWriter(s.getOutputStream(), "gbk"),true); //模拟浏览器向服务器发送请求 //要按http协议的格式向服务器发消息,否则网站服务器不会应答 out.println("GET / HTTP/1.1");//请求头 out.println("Accept: text/html,application/xhtml,*/*"); out.println("Host: www.hncu.net"); out.println("Connection: keep-alive"); out.println(); //接收服务器的应答消息 InputStream in = s.getInputStream(); byte buf[] = new byte[1024]; int len=0; while( (len=in.read(buf))!=-1){ String str = new String(buf,0,len); System.out.println(str); } } } </span>
3、网络蜘蛛,收集网页中的邮箱地址信息。
SpiderDemo类:
<span style="font-family:Times New Roman;font-size:14px;">package cn.hncu.net.bs; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.junit.Test; public class SpiderDemo { @Test//本地爬 public void getMailsLoc() throws IOException{ String mailReg="\\w+@\\w+(\\.\\w+)+";//@163.com asw@zjut.edu.cn Pattern p = Pattern.compile(mailReg);//正则表达式对象(正则工具) BufferedReader br = new BufferedReader( new FileReader(".\\bin\\cn\\hncu\\net\\bs\\mails.html")); String line = null; while( (line=br.readLine())!=null){ Matcher m = p.matcher(line); while(m.find()){ System.out.println(m.group());//group方法返回:符合正则规则的那段字符串 } } } @Test//上网爬---相比上一版本,只要更改IO中的源就行了 public void getMailsNet() throws IOException{ String mailReg="\\w+@\\w+(\\.\\w+)+";//@163.com asw@zjut.edu.cn Pattern p = Pattern.compile(mailReg);//正则表达式对象(正则工具) URL url = new URL("http://www.sina.com"); BufferedReader br = new BufferedReader( new InputStreamReader(url.openStream()) ); String line = null; while( (line=br.readLine())!=null){ Matcher m = p.matcher(line); while(m.find()){ System.out.println(m.group());//group方法返回:符合正则规则的那段字符串 } } } } </span>
相关文章推荐
- 网络编程
- 网络编程(网络基础,OSI参考模型,UDP传输协议,TCP传输协议,URL类和URLConnection类)
- 黑马程序员——网络编程
- Java基础——网络编程(一)
- python网络编程(4)
- 黑马程序员—网络编程和用户图形界面
- 黑马程序员——Java基础——网络编程
- iOS http网络编程系列
- 黑马程序员——网络编程
- 【网络编程系列】二:socket通信原理及实践
- wince软件开发人员应了解的socket网络编程二(摘录)
- C语言网络编程(三)建立套接字通讯TCP
- 网络编程学习笔记-linux常用的网络命令
- Java 网络编程(Elliotte Rusty Harold)
- 网络编程学习的一些网址
- java基础知识——网络编程、IO流
- Linux 系统应用编程——网络编程(I/O模型)
- 网络编程
- 黑马程序员——网络编程
- 网络编程(三) 下载任务,支持断点续传