网络编程

端口:区分数据流向的软件 0-65535 不要使用 1024 以下的端口 (基本被用了),每一个协议拥有自己的端口,在同一个协议下端口不能重复 FTP:21 HTTP:80 tomcat:8080  1521: oracle  3306: mysql

 * 网络编程:
 *     IP:定位网络上的节点,电脑,手机,服务器,路由器..(电子设备)
 *         网络中的IP重要分为2大类:
 *             IPV4  32
 *             IPV6  128
 *         特殊的ip:
 *             192.168.0.0~192.168.255.255 非注册IP,供组织内部使用    
 *             127.0.0.1  本地IP
 *             localhost: 本地域名
 *             ip与域名  DNS服务器
 *         java中如何表示IP:
 *             InetAddress  这个类代表一个互联网协议(IP)地址。 
 * 
 *     端口:区分软件 
 *     url:定位资源 统一资源定位符
 * 
 *  协议: 协议就是交流方式, 更畅通,更标准,更规范
 *  传输协议: 传输数据满足传输协议
 *      tcp:相当于打电话 ***  三次握手,得俩边同意
 *      udp:相当于写信           一方对另一方

InetAddress.getLocalHost();
InetAddress.getByName("www.163.com");  //通过网站获取ip
InetAddress.getByName("223.87.1.58")  

getHostAddress()          返回 ip 地址
getHostName()             返回域名|本机为计算机名

public static void main(String[] args) throws UnknownHostException {
		//static InetAddress getLocalHost() 返回本地主机的地址。 
		InetAddress in1=InetAddress.getLocalHost();
		System.out.println(in1);  //AB-201905250842/192.168.3.105
		//static InetAddress getByName(String host) 决定了IP地址的主机,主机的名字。 
		InetAddress in2=InetAddress.getByName("www.shsxt.com");  //参数可以是IP和域名
		System.out.println(in2);
		InetAddress in3=InetAddress.getByName("123.56.138.186");  //参数可以是IP和域名
		System.out.println(in3);
		System.out.println("===============");
		/*
		 *  String getHostAddress() 返回的IP地址字符串的文本表示。  
			String getHostName() 这个IP地址的主机名。  
		 */
		System.out.println(in1.getHostAddress());  //192.168.3.105
		System.out.println(in1.getHostName());  //AB-201905250842
		System.out.println(in2.getHostAddress());
	}

//结果是:
MSI/192.168.3.64
www.shsxt.com/123.56.138.186
/123.56.138.186
===============
192.168.3.64
MSI
123.56.138.186

端口

端口是虚拟的概念,并不是说在主机上真的有若干个端口。通过端口,可以在一个主机
上运行多个网络应用程序。可以类比为:IP 相当于公司,端口相当于公司各部门,URL,相当于各部门的人员

udp: 发信息,非面向连接  不安全  协议简单,开销小,效率高 大小有限制,一般不超过60k
tcp: 打电话,面向连接  安全,效率低  基于3次握手: 1.拨号  2.响应,连接上  3.发送数据

URL

 * URL: 统一资源定位符
 *     互联网的三大基石: url html http

 

 


UDP

 *  udp实现基本流程: 发送端
 *     1.定义发送端
 *         DatagramSocket(int port) 构造一个数据报套接字绑定到本地主机上的指定端口。
 *     2.准备数据
 *     3.给数据打包 
 *         DatagramPacket(byte[] buf, int length, InetAddress address, int port) 构造一个数据报包发送数据包的长度 length指定主机上的指定端口号。 
 *     4.发送
 *     5.关闭

 

public class UDPSend01 {
	public static void main(String[] args) throws IOException {
		System.out.println("------------------发送端-------------------");
		//1.定义发送端
		DatagramSocket client= new DatagramSocket(8888);
		//2.数据
		byte[] str="因为哈哈".getBytes();
		//3.打包
		DatagramPacket packet=new DatagramPacket(str,str.length,new InetSocketAddress("localhost", 9999));
		//4.发送
		client.send(packet);
		//5.关闭
		client.close();
	}
}
 *  udp实现基本流程: 接收端
 *     1.定义接收端
 *     2.准备盒子接收数据
 *         DatagramPacket(byte[] buf, int length) 构造一个 DatagramPacket length接收数据包的长度。 
 *     3.接收 receive(packet)
 *     4.关闭
public static void main(String[] args) throws IOException {
		System.out.println("------------------接收端-------------------");
		//1.定义接收端
		DatagramSocket server= new DatagramSocket(9999);
		//2.准备一个字节数组,打包
		byte[] car=new byte[1024];
		DatagramPacket packet=new DatagramPacket(car,car.length);
		//3.接收
		server.receive(packet);
		//处理数据
		/*
		byte[] getData() 
		返回数据缓冲区。  
		int getLength() 
		返回数据的长度发送或接收到的数据的长度。  
		 */
		byte[] datas=packet.getData();
		int length=packet.getLength();
		System.out.println(new String(datas,0,length));
		//5.关闭
		server.close();
	}

 TCP

 * tcp实现基本流程: 客户端 
 *     1.定义客户端 Socket  Socket(String host, int port) 创建一个流套接字连接到指定主机上的指定端口号。
 *    2.准备数据
 *    3.写出  IO操作 
 *    4.关闭
public static void main(String[] args) throws UnknownHostException, IOException {
		System.out.println("-------------Client-----------");
		//1.定义客户端 Socket  Socket(String host, int port)
		Socket client=new Socket("127.0.0.1",7777);
		//2.准备数据
		String str="name=zhangsan&pwd=123";
		//3.写出  IO操作 
		DataOutputStream data=new DataOutputStream(client.getOutputStream());
		data.writeUTF(str);
		
		data.flush();
		//4.关闭
		data.close();
		client.close();
	}
 * tcp实现基本流程: 服务端
 *     1.定义服务端 ServerSocket  ServerSocket(int port) 创建一个服务器套接字绑定到指定端口。 
 *    2.阻塞式监听  Socket accept() 监听连接套接字并接受它。  
 *    3.io操作
 *    4.关闭
public static void main(String[] args) throws IOException {
		System.out.println("-------------Server-----------");
		//1.定义服务端
		ServerSocket server=new ServerSocket(7777);
		//2.阻塞式监听  Socket accept() 
		Socket client=server.accept();
		//3.io操作
		DataInputStream in=new DataInputStream( client.getInputStream());
		String str=in.readUTF();
		System.out.println(str);
		//4.关闭
		in.close();
		client.close();
		server.close();
	}

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值