网络编程

1.ip:
定义网络上的不同节点(手机,电脑,路由器…)
IPv4:32位 IPV6:128位
非注册IP地址(公司内部使用): 192.168.0.0 ~ 192.168.255.255
特殊的IP:
127.0.0.1 本地IP
1ocalhost 本机域名
DNS域名解析器
java.net 类 InetAddress 此类表示互联网协议 (IP) 地址。
static InetAddress getLocalHost() 返回本地主机。
static InetAddress getByName(String host) 在给定主机名的情况下确定主机的 IP 地 址
String getHostAddress()
返回 IP 地址字符串(以文本表现形式)。
String getHostName()
获取此 IP 地址的主机名。
2.端口; 区分软件的;
定义端口 2个字节 0~65535
相同的协议下端口不能冲突
端口自定义越大越好,8000以上,8000以内预留端口号
特殊的端口号:
80: http
8080: tomcat
1521: Oracle端口号
3306: mysql端口号
INetSocketAddress 此类实现 IP 套接字地址(IP 地址 + 端口号)。
/
public class PortDemo02 {
public static void main(String[] args) {
//InetSocketAddress(String hostname, int port) 根据主机名和端口号创建套接字地址。
InetSocketAddress i=new InetSocketAddress(“127.0.0.1”,8888);
System.out.println(i);
/

* InetAddress getAddress()
获取 InetAddress。
String getHostName()
获取 hostname。
int getPort() 获取端口
*/
System.out.println(i.getAddress().getHostName());
System.out.println(i.getHostName());
System.out.println(i.getPort());

}

}
/* 发送数据

  • 协议: 规范 合同
  • udp :非面向连接的 写信 ,不安全,效率高,协议简单,开销小,大小有限制一般不超过60k
  • tcp :面向连接的 打电话 ,安全,效率低,开销大 3次握手:1.拨号 2.回访:响应
    3.发送数据 ,基于IO穿出数据
  • 应用层如何与传输层进行沟通?
  •  通过Socket套接字
    
  •  面向Socket编程,Socket相当于插座,是两层之间沟通的接口,
    

不同协议,Socket的实现不一样
*

  • udp如何实现Socket编程: 发送端和接收端是平等的
  •  DatagramSocket  此类表示用来发送和接收数据报包的套接字
    
  •  	DatagramSocket(int port) 
    
  •  DatagramPacket  此类表示数据报包。
    
  • UDP基本流程:发送端
  •  1.创建发送端,指明发送端的端口
    
  •  2.准备数据,转为字节数组
    
  •  3.把数据打包 指明接收端的地址和端口号  DatagramPacket
    
  •  4.发送数据
    
  •  5.关闭
    

*/
public class SendDemo01 {
public static void main(String[] args) throws IOException {
System.out.println("----------------发送端--------------");
//1,创建发送端
DatagramSocket socket=new DatagramSocket(8888);
//2.准备数据,转为字节数组
String str=“那些你很冒险的梦”;
byte[] arr=str.getBytes();
//3.打包 DatagramPacket(byte[] buf, int offset, int length,
//SocketAddress address)
DatagramPacket packet=new DatagramPacket
(arr,0,arr.length,new InetSocketAddress(“localhost”,9999));
//4.void send(DatagramPacket p) 从此套接字发送数据报包。
socket.send(packet);
//5.关闭
socket.close();
}

}
/* 接收

  • UDP基本流程:接收端
  • 1.构建接受端,指定接受端端口
  • 2.准备字节数组,用来存储接口收据的
  • 3.把字节数组打包
  • 4.阻塞式接收
  • 5.处理数据
  • 6.关闭
    */
    public class ReceiveDemo02 {
    public static void main(String[] args) throws IOException {
    System.out.println("----------------接受端--------------");
    //1.构建接受端,指定接受端端口
    DatagramSocket socket=new DatagramSocket(9999);
    //2.准备字节数组,用来存储接口收据的
    byte[] arr=new byte[1024 *60];
    //3.把字节数组打包 DatagramPacket(byte[] buf, int offset, int length)
    DatagramPacket packet=new DatagramPacket(arr,0,arr.length);
    //4.接收 void receive(DatagramPacket p) 从此套接字接收数据报包。
    socket.receive(packet);
    /

    * byte[] getData() 返回数据缓冲区。
    int getLength() 返回将要发送或接收到的数据的长度。
    */
    //5.处理数据
    System.out.println(new String(packet.getData()));
    System.out.println(packet.getLength());
    //6.关闭
    socket.close();
    }
    }
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值