黑马程序员_网络编程
来源:互联网 发布:linux系统死机 编辑:程序博客网 时间:2024/05/17 08:51
---------------------- android培训、java培训、期待与您交流! ----------------------
今天进入网络编程的学习了,感觉就上了一个档次了,网络编程的主要内容是关于网络模型,网络通讯要素等相关知识。
网络模型分为osi参考模型和tcp/ip参考模型,osi参考模型划分相对较细腻,共分为七层,分别是由上至下:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层。
与之相对应的tcp/ip参考模型则相对简洁共分为四层,分别是由上至下:应用层,传输层,网际层,主机至网络层。其中osi的应用层,表示层,会话层则对应tcp/ip的应用层,而传输层和网络层则是相对应的,最后是osi 的数据链路层,物理层则对应于tcp/ip的主机至网络层。而平时我们编写代码进行通讯则位于传输层。
网络通讯要素则包含ip地址,端口号,传输协议。
网络传输步骤:
1,找到对方主机的ip
2,数据要发送到对方指定的应用程序上,为了标识这些应用程序,给这些应用程序都用数字进行标识,为了方便称呼这个数字,叫做端口。
3,定义通信规则,这些通信规则称为协议,国际组织定义了通用协议Tcp/ip。
网络编程使用的是java.net.*;包,其中用来描述网络地址的是InetAddress类,这个类比较特殊,它没有构造函数,但是有静态方法和非静态方法供调用,譬如静态方法getLocalHost()
会返回本地主机的主机名和ip地址,但是值得注意的是要抛出UnknownHostException。下面是一段示例代码:
import java.net.*;
public classInetAddressDemo {
public static void main(String []args)throws Exception
{
InetAddressi=InetAddress.getLocalHost();
System.out.println(i.toString());
System.out.println("Name:"+i.getHostName());
System.out.println("Address:"+i.getHostAddress());
}
}
此外,在InetAddress类中还有一个比较厉害的方法是getByName(String host)方法,它的能够返回给主机名的情况下的ip地址,不过它所返回的是一个InetAddress对象,需要定义对象来对其进行接收,下面一段示例代码:
import java.net.*;
public classInetAddressDemo {
public static void main(String []args)throws Exception
{
InetAddressi=InetAddress.getByName("127.0.0.2");
System.out.println(i.toString());
System.out.println("Name:"+i.getHostName());
System.out.println("Address:"+i.getHostAddress());
}
}
有一点还需注意的是如果网络上的主机名和ip地址并没有映射关系,则在程序运行之后的主机名仍然为ip地址,当然我们可以这样
InetAddress i=InetAddress.getByName("www.baidu.com");
前提是联网的情况下,返回百度的主机ip地址,但是作为大型搜索引擎,主机不止一台,因此返回的则是一个InetAddress数组,此时我们则要用到InetAddress中的getAllByName(String host)方法:
InetAddress[] ips =InetAddress.getAllByName("www.baidu.com");
---------------------- android培训、java培训、期待与您交流! ----------------------
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- WCF调试的方法
- 鼠标移到Label上显示手型useHandCursor
- C#编程中的66个好习惯
- 一个c#的输入框函数
- 国行2.2详细教程,root-删除系统程序-unroot,已发附件
- 黑马程序员_网络编程
- 测试覆盖率
- c# 验证码识别基础类(含源码)
- QGraphicsView 中不能刷新的解决方案
- Android JAVA和JS的通信
- C++中奇怪的虚函数
- Java SE 6 Hotspot [TM] 虚拟机垃圾回收调优
- MyEclipse自动补全与快捷键设置
- Oracle中临时表的深入研究