网络编程的基本知识
网络通讯要素
. IP地址
. 网络中设备的标识
. 不易记忆,可用主机名
. 本地回环地址:127.0.0.1 主机名:localhost
. 不易记忆,可用主机名
. 本地回环地址:127.0.0.1 主机名:localhost
. 端口号
. 用于标识进程的逻辑地址,不同进程的标识
. 有效端口:0~65535,其中0~1024系统使用或保留端口。
. 传输协议
. 通讯的规则
. 常见协议:TCP,UDP
. 常见协议:TCP,UDP
UDP
. 将数据及源和目的封装成数据包中,不需要建立连接
. 每个数据报的大小在限制在64k内
. 因无连接,是不可靠协议
. 不需要建立连接,速度快
TCP
. 建立连接,形成传输数据的通道。
. 在连接中进行大数据量传输
. 通过三次握手完成连接,是可靠协议
. 必须建立连接,效率会稍低
. 将数据及源和目的封装成数据包中,不需要建立连接
. 每个数据报的大小在限制在64k内
. 因无连接,是不可靠协议
. 不需要建立连接,速度快
TCP
. 建立连接,形成传输数据的通道。
. 在连接中进行大数据量传输
. 通过三次握手完成连接,是可靠协议
. 必须建立连接,效率会稍低
Socket流机制
Socket就是为网络服务提供的一种机制。
通信的两端都有Socket。
网络通信其实就是Socket间的通信。
数据在两个Socket间通过IO传输。
通信的两端都有Socket。
网络通信其实就是Socket间的通信。
数据在两个Socket间通过IO传输。
InetAddress类
InetAddress的构造函数不是公开的(public),所以需要通过它提供的静态方法来获取,有以下的方法:
static InetAddress[] getAllByName(String host)
static InetAddress[] getAllByName(String host)
:是根据主机名返回其可能的所有InetAddress对象,保存在一个数组中
static InetAddress getByName(String host)
:在给定主机名的情况下确定主机的 IP 地址
static InetAddress getLocalHost()
static InetAddress getLocalHost()
:返回本地主机。
String getHostAddress()
:返回IP地址字符串(以文本表现形式).
String getHostName()
:获取此ip地址的主机名.
:返回IP地址字符串(以文本表现形式).
String getHostName()
:获取此ip地址的主机名.
注意到这些方法可能会抛出的异常。如果安全管理器不允许访问DNS服务器或禁止网络连接,SecurityException会抛出,如果找不到对应主机的IP地址,或者发生其他网络I/O错误,这些方法会抛出UnknowHostException。
代码如下:
package network;
import java.net.InetAddress;
import java.net.UnknownHostException;
public class NetWork {
public static void main(String [] args) throws UnknownHostException{
//获取本地主机ip,和主机名
// InetAddress myID = InetAddress .getLocalHost();
// String a = myID.getHostAddress();
// String b = myID.getHostName();
// System. out.println(a);
// System. out.println(b);
//获取网络中的主机域名和 ip地址
InetAddress netWorkID = InetAddress.getByName("www.baidu.com");//
System. out.println(netWorkID.getHostName());
System. out.println(netWorkID.getHostAddress());
System. out.println("--------");
System. out.println(netWorkID);
InetAddress[] addresses=InetAddress.getAllByName("www.baidu.com");
for(InetAddress addr:addresses){
System.out.println(addr);
}
}
}
import java.net.InetAddress;
import java.net.UnknownHostException;
public class NetWork {
public static void main(String [] args) throws UnknownHostException{
//获取本地主机ip,和主机名
// InetAddress myID = InetAddress .getLocalHost();
// String a = myID.getHostAddress();
// String b = myID.getHostName();
// System. out.println(a);
// System. out.println(b);
//获取网络中的主机域名和 ip地址
InetAddress netWorkID = InetAddress.getByName("www.baidu.com");//
System. out.println(netWorkID.getHostName());
System. out.println(netWorkID.getHostAddress());
System. out.println("--------");
System. out.println(netWorkID);
InetAddress[] addresses=InetAddress.getAllByName("www.baidu.com");
for(InetAddress addr:addresses){
System.out.println(addr);
}
}
}
以上知识,都是自己百度总结的,有什么不对的地方,希望大家可以指出.