您的位置:首页 > 理论基础 > 计算机网络

Java网络学习和笔记——黑马训练营

2015-10-22 18:25 471 查看
-------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


1.使用InetAdress

Java提供了InetAdress工具类来操作IP地址。

获取InetAdress实例对应的IP地址和主机名:

1.String getCanonicalHostName;获取此IP地址的全限定域名。

2.String getHostAddress():返回该InetAdress实例对应的IP地址字符串。

3.String getHostName():获取此IP地址的主机名。

4.boolean isReachable():用于测试是否可到达该地址。

public static void main(String[] args)  throws Exception{
//根据主机名称来获取向对应的InetAddress
InetAddress ip=InetAddress.getByName("www.itheima.com");
System.out.println(ip);
//打印结果www.itheima.com/42.121.41.246
boolean reachable=ip.isReachable(10000);
//获取本机IP地址
System.out.println("本机IP:"+ InetAddress.getLocalHost());
}


2.UDP网络编程的操作

UDP网络传输特点:

1.将数据及源和目的封装成数据包中,不需要建立连接

2.每个数据包的大小限制在64K内

3.因无连接,是不可靠协议

4.不需要建立连接,速度快

服务端代码:

public static void main(String[] args)  throws Exception{
//建立Socket发送端
DatagramSocket ds = new DatagramSocket();
//发送数据
String s = "udpSend发送的消息";
byte[] byt = s.getBytes();
//获取数组长度
int length =  byt.length;
//获取计算机名(测试使用本机IP)
InetAddress Ip = InetAddress.getLocalHost();
int port = 6666;
DatagramPacket dp = new DatagramPacket(byt, length,Ip,port);
//调用Socket的发送方法,发送数据包
ds.send(dp);
//关闭socaket
ds.close();
}


客户端代码:

public static void main(String[] args) throws IOException {
// 建立客户端socket对象
// 客户端端口必须和服务器端口一致
DatagramSocket ds = new DatagramSocket(6666);
byte[] byt = new byte[1024];
DatagramPacket dp = new DatagramPacket(byt, byt.length);
// 调用Socket的接收
ds.receive(dp);
// 获取地址对象
InetAddress id = dp.getAddress();
// 获取地址ip
String locahost = id.getHostAddress();
// 获取值
byte[] data = dp.getData();
// 获取长度
int length = dp.getLength();
String rce = new String(data, 0, length);
System.out.println("从" + locahost + "接收到的数据是:" + rce);
// 关闭socaket
ds.close();
}
打印结果从10.198.1.13接收到的数据是:udpSend发送的消息

3.TCP网络编程操作

TCP传输的特点:

1.建立连接,形成传输数据的通道

2.在连接中进行大数据量传输

3.通过三次握手完成连接,是可靠协议

4.必须建立连接,效率会稍低

TCP服务端

public static void main(String[] args) throws IOException{
//创建socket对象
Socket socket=new Socket(InetAddress.getLocalHost(), 8000);
//socket与字节流相关联
OutputStream ops=socket.getOutputStream();
String str="tcpSend我是数据";
//将字符串装换成数组
byte[] byt=str.getBytes();
//输出数据
ops.write(byt);
//关闭socket
socket.close();
//关闭流
ops.close();
}


TCP客户端

ServerSocket server=new ServerSocket(8000);
Socket socket=server.accept();
InputStream ips=socket.getInputStream();
int len=0;
byte[]byt=new byte[1024];
while((len=ips.read())!=-1){
System.out.println(new String(byt,0,len));
}
//关闭socket
socket.close();
//关闭流
ips.close();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: