网络编程

网络编程

一、网络

(1)、IP

在因特网中,它是能使连接到网上的所有计算机网
络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。

  • 特殊的IP:192.168.0.0~192.168.255.255 内部IP|私有IP,公司内部使用的IP地址
  • 本地IP:127.0.0.1
  • localhost:本机
  • 域名-->IP :DNS解析器
(2)、端口Port

通过端口,可以在一个主机
上运行多个网络应用程序。可以用来区分软件

(3)、传输协议
  • Tcp: 面向连接、安全、可靠,效率低
  • Udp: 非面向连接、不安全、数据可能丢失 、 效率高

二、网络编程

1、InetAddress
方法
  • static  InetAddress  getLocalHost()  返回本地主机。
  • static  InetAddress  getByName(String host) 在给定主机名的情况下确定主机的 IP 地址
  • String  getHostAddress()  返回IP地址字符串(以文本表现形式)
  • String  getHostName()  获取此IP地址的主机名。
InetAddress address1=InetAddress.getLocalHost();
System.out.println(address1);
System.out.println(address1.getHostAddress());
System.out.println(address1.getHostName()); 
2、InetSocketAddress

java中使用InetSocketAddress表示端口,此类实现 IP 套接字地址(IP 地址 + 端口号)

建议: 8000以下预留端口号

常见端口:

  • 80: http
  • 8080: tomcat
  • 1521: Oracle
  • 3306: Mysql
  • 方法:

    • getAddress()    返回 InetAddress 对象
    • getPort()    返回端口
InetSocketAddress i1=new InetSocketAddress("127.0.0.1",8888);
System.out.println(i1);
System.out.println(i1.getPort());  //8888
System.out.println(i1.getHostName());  //127.0.0.1
System.out.println(i1.getAddress());  //127.0.0.1
3 、URL

(1)统一资源定位符。是互联网的三大基石之一:html,url,http

(2)由4部分组成:

  • 协议
  • 主机域名
  • 资源文件名
  • 端口号

(3)URL 是指向互联网“资源”的指针

public class URLDemo03 {
	public static void main(String[] args) throws MalformedURLException {
		URL url=new URL("http://www.taobao.com:80/index.html?name=zhangsan&pwd=123#a");
		System.out.println(url);
		System.out.println("协议:"+url.getProtocol());
		System.out.println("域名:"+url.getHost());
		System.out.println("端口:"+url.getPort());
		
		System.out.println("文件:"+url.getFile());
		
		/*
		 * String getQuery()   获取此 URL 的查询部分。 
		   String getRef()   锚点
		 */
		System.out.println("查询数据:"+url.getQuery());
		System.out.println("锚点:"+url.getRef());
	}
}

三、Udp编程

  • DatagramSocket :定义发送端和接收端
  • DatagramPacket :打包
  • (1)、客户端udp实现基本流程 
    1. 创建客户端 (DatagramSocket 类 +指定端口 )
    2. 准备数据,转为字节数组
    3. 封装成数据包 ( 需要指定包发送的地址+端口 即服务器地与端口)
    4. 发送数据
    5. 释放资源
    public class UDPClient01 {
    	public static void main(String[] args) throws IOException {
    		System.out.println("----------------我是发送端---------------");
    		//1.定义发送端
    		DatagramSocket client=new DatagramSocket(8888);
    		//2.准备数据
    		String str="哈哈";
    		byte[] arr=str.getBytes();
    		//3.打包
    		DatagramPacket packet=new DatagramPacket(arr,0,arr.length,new InetSocketAddress("127.0.0.1", 9999));
    		//4.发送void send(DatagramPacket p)    从此套接字发送数据报包。 
    		client.send(packet);
    		//5.关闭
    		client.close();
    	}
    }
    
    (2)、服务器端udp实现基本流程
    1. 创建服务器 (DatagramSocket 类 +指定端口 )
    2. 接收包裹
    3. 操作数据
    4. 释放资源
    public class UDPReceive02 {
    	public static void main(String[] args) throws IOException {
    		System.out.println("-------------接收端-------------");
    		//1.接收端
    		DatagramSocket server=new DatagramSocket(9999);
    		//2.准备字节数组,用来打包,包裹接收数据的
    		byte[] arr=new byte[1024*60];
    		DatagramPacket packet=new DatagramPacket(arr,arr.length);  
    		//3.接收
    		server.receive(packet);
    		//4.操作数据
    		System.out.println(packet.getData().length);
    		System.out.println(packet.getLength());
    		System.out.println(new String(arr,0,packet.getLength()));
    		//5.关闭
    		server.close();
    		
    	}
    }
    

    四、TCP编程

  • Socket:发送 TCP 消息
  • ServerSocket:创建服务器
  • Socket  accept():侦听并接受到此套接字的连接
  • (1)、客户端实现基本流程
    1. 定义客户端,连接服务器
    2. 发送数据
    public class TCPClient01 {
    	public static void main(String[] args) throws UnknownHostException, IOException {
    		System.out.println("-------------我是客户端-------------");
    		//1.客户端
    		Socket client=new Socket("localhost",9999);  //服务器的ip+端口号
    		//2.数据
    		String str="哈哈哈哈";
    		//3.获取输出流
    		DataOutputStream out= new DataOutputStream(client.getOutputStream());
    		out.writeUTF(str);
    		
    		out.flush();
    		//3.关闭
    		out.close();
    		client.close();
    	}
    }
    
    (2)、服务器端实现基本流程
    1. 创建服务器 指定端口
    2. 等待客户端连接
    3. IO操作
    4. 关闭
    public class TCPServer02 {
    	public static void main(String[] args) throws IOException {
    		System.out.println("-------------我是服务端-------------");
    		//1.定义服务端
    		ServerSocket server=new ServerSocket(9999);
    		//2.阻塞式监听:一个客户端就是一个socket 
    		Socket client=server.accept();
    		//3.IO操作
    		DataInputStream is=new DataInputStream(client.getInputStream());
    		String str=is.readUTF();
    		System.out.println(str);
    		//4.关闭
    		is.close();
    		client.close();
    		server.close();
    	}
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值