----------- 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学习型技术博客、期待与您交流! ---------