------- android培训、java培训、期待与您交流! ----------
网络编程中的几个基本概念:
IP地址:
1.在网络中唯一标识一台主机的32位比特码,用点分十进制表示
2.本地回环地址:127.0.0.1 主机名:loaclhost
端口号:
1.IP地址标识的是主机,是点到点通讯的标识。端口号是用
于表示主机中一个进程的逻辑地址,是端到到通讯的标识
2.有效端口:0-65535,其中0-1024系统使用或保留端口
传输协议:
通讯的规则
常见协议:TCP,UDP:二者的区别是:
UDP:面向无连接,对讲机的例子
将数据及 源和目的封装成数据包中,
不需要建立连接 每个数据报的大小
在限制在64K内 因无连接,是不可
靠协议不需要建立连接,速度快
TCP:必须有连接,才能传输数据,
电话机的例子建立连接,形成传输数
据的通道在连接中建立大量数据传输
通过三次握手完成连接,是可靠协议
必须建立连接,效率会稍低。
Socket:
Socket就是为网络服务提供的一种机制。
通信的两端都有Socket
网络通信其实就是Socket间的通信
数据在两个Socket间通过IO传输
现在先来看UDP:
定义UDP发送端:
import java.net.*; class UdpSend { public static void main(String[] args) { DatagramSocket ds=new DatagramSocket(); byte[] buf="wo shi Udp".getBytes(); DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.0.254"),10000); ds.send(dp); ds.close(); } } |
import java.net.*; class UdpRece { public static void main(String[]args) { DatagramSocket ds=new DatagramSocket(10000); while{ byte[] buf=new byte[1024]; DatagramPacket dp=new DatagramPacket(buf,buf.length); ds.receive(dp); String ip=dp.getAddress().getHostAddress(); String data=new String(dp.getData(),dp.getLength()); int port=dp.getPort(); System.out.println(ip+"...."+data+":::"+port); ds.close(); } } } |
现在再来看看TCP:
定义Tcp客户端:
import java.net.*; import java.io.*; class TcpClient { public static void main(String[]args) { Socket s=new Socket("192.168.1.254",10003) OutputStream out=s.getOutputStream(); out.write("wo shi tcp".getBytes()); s.close(); } } |
import java.io.*; import java.net.*; class TcpServer { public static void main(String[]args) { ServerSocket ss=new ServerSocket(10003); Socket s=ss.accept(); String ip=s.getInetAddress().getHostAddress(); System.out.println(ip+".........connected"); InputStream in=s.getInputStream(); byte[] buf=byte[1024]; int len=in.read(buf); System.out.println(new String(buf,0,len); s.close(); } } |
URL类:
构造函数:URL(String spec) 根据URL字符串标识形式创建URL对象
URL(String protocal,String host,int port,String file)分开输入URL中的字段值
常用方法的演示:
import java.net.*; class URLDemo { public static void main(String[]args) { URL url=new URL("http://192.168.0.254:8080/m/2.html?name=haha&age=30"); System.out.println("getProtocal()"+url.getProtocol()); System.out.println("getHost()"+url.getHost()); System.out.println("getPort()"+url.getProt()); System.out.println("getPath()"+url.getPath()); System.out.println("getPath()"+url.getPath()); System.out.println("getFile()"+url.getFile()); System.out.println("getQuery()"+url.getQuery()); } } |
DNS服务器:
作用是把网站的域名解析为IP地址,分为递归查询和迭代查询两种方式另外在解析时
要先从本地的C:\\windows\\system32\divers\etc\hosts配置文件中查询,
小技巧:将常用网站的域名和ip地址的映射添加到上面的配置文件中可以提高解析
的速度;还可以将一些流氓网站的域名对应的ip地址设置为本机这样就不能自动连上。
------- android培训、java培训、期待与您交流! ----------