----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
网络编程学习完,自己也经常编写一些小程序,所以对网络编程有一定的认识,所以我下面就对网络写一下自己的见解。
1.网络模型:
·OSI参考模型
·TCP/IP参考模型
2.网络通讯要素:
1.Ip地址
2.端口号
3.传输协议
通讯的必要条件:
1.通过Ip找到对方的主机
2.数据要发送到对方指定的应用程序上,所有要指定端口号。
3.定义通讯规则,这种规则就是通讯协议。
UDP
将数据及源目的封装成数据包中,不需要建立连接
每个数据报的大小在限制在64 K内
因无连接,是不可靠协议
不需要建立连接,速度快
TCP
建立连接,形成传输数据的通道
在连接中进行大量的数据传输
通过三次握手完成连接,是可靠协议
必须建立连接,效果会稍低
Socket
Socket就是为了网络服务提供一种机制
通信的两端都有Socket
网络通信就是Socket间的通信
数据在两个Socket间通过IO传输
下面代码是我自己写的小程序:
/**
网页爬虫:
爬出网页内所有的邮箱。
思路:
先将规则封装成对象,然后再将规则和要匹配的字符相关联,获得Matcher对象,
然后用Matcher对象来开始查找find(),获取需要的数据调用group()方法。
*/
import java.io.*;
import java.net.*;
import java.util.*;
import java.util.regex.*;
import java.net.URLConnection;
class RegexTest
{
public static void main(String[] args) throws Exception
{
HashSet<String> hs=new HashSet();
// ArrayList<String> al=new ArrayList<String>();
RegexTest rt=new RegexTest();
//邮箱的正则表达式:
String reg="\\d+";
String str="http://..";
InputStream in=rt.getURLMsg(str);
hs=rt.getMsg(in,reg);System.out.println("1");
System.out.println(hs);
// al=rt.getMsg(in, reg);
Iterator<String> it=hs.iterator();
System.out.println(it.hasNext());
while(it.hasNext())
{
System.out.println("2");
System.out.println(it.next());
}
}
//传入一个网址域名,获取网页上的信息,然后返回一个输入流:
/**/
public InputStream getURLMsg(String url_str)throws Exception
{
URL url=new URL(url_str);
URLConnection conn=url.openConnection();
InputStream in=conn.getInputStream();
BufferedWriter bufw=new BufferedWriter(new FileWriter("a.txt"));
BufferedReader bufr=new BufferedReader(new InputStreamReader(in));
String line=null;
while((line=bufr.readLine())!=null){
bufw.write(line);
bufw.flush();
}
System.out.println("信息爬完!");
return in;
}
/**/ //传入流对象和正则规则,获取想要的数据;
public HashSet<String> getMsg(InputStream in,String regex)throws Exception
{
// ArrayList<String> al=new ArrayList<String>();
HashSet<String> hs=new HashSet<String>();
//现将正则规则封装成对象。
Pattern p= Pattern.compile(regex);
BufferedReader bufr=new BufferedReader(new InputStreamReader(in));
String line=null;
while((line=bufr.readLine())!=null)
{
Matcher m=p.matcher( line);
while(m.find())
{
hs.add(m.group());
}
}
return hs;
}
}
----------------------- android培训、java培训、java学习型技术博客、期待与您交流! ----------------------
详情请查看: