----------- android
培训、java培训、java学习型技术博客、期待与您交流! ---------
网络编程:
	就是实现网络互联的不同计算机上运行的应用程序间的数据通信。
	用java实现多台计算机之间的通信。
	三大要素:
		IP地址:网络中每台计算机的唯一标示。
			为了实现网络中多台计算机之间的数据传输,就需要给每台电脑指定一个标识号指定接收数据的计算和
			发送数据的计算机。而在TCPIP
协议中,这个标识号就是IP地址。
			IP地址的组成:
				网络号码 + 主机地址
			IP地址的分类:
				城域网,广域网,校园网,
局域网
			怎么查看IP地址?
				1、通过控制中心。
				2、ipconfig all
			怎么查看网络通信状态?
				ping  IP地址。 
					ping 127.0.0.1(本地回环地址)
					ping 220.181.111.188
					
		端口号:用来标示进程的逻辑地址。
			端口的分类:
				物理端口,逻辑端口。
			逻辑端口:
				1、每个网络程序都至少会有一个逻辑端口。
				2、用于标示进程的逻辑地址,不同进程的标示不一样。
				3、有效端口:0-65535 ,其中0-1024直接的端口已经被系统占用了或用过保留端口。
					也就说:我们在给定端口号的时候,尽量不要使用0-1024之间的端口号。
			
		通过360可以查看端口号
		协议:定义通信的规则。
			UDP:
				把数据进行打包。
				数据有
限制的(64K)。
				面向无连接。
				不可靠。
				效率高。
			TCP:
				建立通信通道。
				数据无限制。
				面向连接(三次握手)
				可靠。
				效率低。
	Socket:
		为网络编程提供的一种机制,里边封装了:端口和IP。
		1、通信两端都有Socket。
		2、网络通信其实就是Socket间的通信。数据在两个Socket间通过IO流传输。
	网络编程也叫套接字编程,Socket编程。	
			
InetAddress类:
	IP地址的包装类。
	这个类没有提供构造方法,哪我们怎么
创建对象呢?
	通过: public static InetAddress getByName(String host);  
			返回的是一个IP地址(对象形式的)
			注意:host可以是主机名,也可以是IP地址的文本形式  192.168.27.66
	该类下的两个方法:
		public String getHostName();  获取主机名。
		public String getHostAddress();  获取IP地址的文本形式。
		
		public static InetAddress getLocalHost();  
用UDP协议发送数据:
	1、创建发送端Socket对象。
		DatagramSocket类:
			注意:这里我们用的是该类的无参构造。
		
	2、创建数据,并将数据打包。
		DatagramPacket:
			数据报包类。
			注意:这里我们用的是 public DatagramPacket(byte[] bys,int length,InetAddress address,int port);
					四个参数分别是:要发送的数据的字节数组形式,发送的数据大小,要发给谁(IP),端口
	3、发送数据包。
		public void send(DatagramPacket p);  这个方法是DatagramSocket类下的
	4、释放在资源。
用UDP协议接收数据:	
	1、创建接收端Socket对象。
		调用的是public DatagramSocket(int port)这个构造。
	2、创建一个容器,接收传过来的数据包。
		public DatagramPacket(byte[] bys ,int length); 调的是这个构造
	3、接收传过来的数据。
		public void receive(DatagramPacket p);  这个方法是DatagramSocket类下的。
	4、
解析数据包。
		public InetAddress getAddress();  获取传数据过来的IP主机。
		public byte[] getData();   获取传过来的数据(字节数组形式)。
		public int length(); 获取接收到的实际长度。
		public String(byte[] bys,int index,int length);
	5、释放资源。
广播地址:
	IP地址的最后一个号段,改为255.
	一般我们分配IP的时候,255是不会被分配。
			
用多
线程改进聊天室:
	其实就是把main函数中的代码,封装到run()方法中。
	应用程序:
		IO流,多线程,网络编程。
			
TCP协议发送数据:		
	1、创建一个客户端的Socket对象。
		public Socket(String ip,int port);  
		三次握手:
			第一次:客户端向
服务端发出请求,我要跟你连接。
			
第二次:服务端给客户端一个反馈。
			第三次:成功建立通道。
	2、建立连接。
	3、发送数据。(获取输出流,来往服务端发送数据)
		public OutputStrem getOutputStream();  该方法是Socket类下的,用来获取输出流。
	4、释放资源。
TCP协议接收数据:			
	1、创建一个服务端Socket对象。
		public ServerSocket(int port);
	2、
监听连接。
		public Socket accept(); 
	3、获取输入流,来读取数据,并显示。
		public InputStream getInputStream(); 注意:该方法是Socket类中的方法。
	4、释放资源。
	
需求:数据来源于键盘录入,通过服务器转成大写,然后反馈给客户端显示。
一个案例:键盘录入数据写入文本文件
	注意:
		当我们想结束键盘录入的时候,怎么办?
		1、
自定义一个结束标示。
		2、调用 public void shutdownOutPut(); 
----------- android培训、java培训、java学习型技术博客、期待与您交流! ---------