JAVA基础篇(9)

网络编程

网络: 由多台计算机通过连接设备,组成的计算机群称为网络。
通信协议: 像交通一样有交通安全协议,网络中也有这样的协议。
常见的通信协议:

  1. TCP/IP协议
  2. UDP协议
  3. 其他协议

TCP/IP协议:
JAVA基础篇(9)_第1张图片

上图中的四层分别是tcp/ip中四层:应用层,传输层,网络层,链路层。

  • 应用层:主要负责程序的协议,HTTP(超文本传输协议),FTP(文件传输协议),DNS(域名服务,用于将名称解析为ip)。
  • 传输层:主要负责传输数据,分为可靠传输(TCP),以及不可靠传输(UDP);其中TCP是远距离可靠传输,常用于跨距离传输;UDP为短距离不可靠传输,常用于无线设备,如无线耳机等。
  • 网络层:负责两台计算机的位置定义连接,IP(网络间互联的协议)为每个计算机的专属标记位置,ICMP(用于计算机与路由器间互访的协议),IGMP(互联网组管理协议)。
  • 链路层:负责网络中的连接线路,常见的连接设备有光纤等;驱动是用软件驱使硬件进行操作。

IP地址与端口号:

  • IP:每一台计算机的逻辑标识符。
  • 端口号:用来区分计算机中的不同程序(有0-65535)。
  • 总结:当一台计算机向另外台计算机发送消息时,先找到IP再找到端口号,然后进行传输。

客户端与服务器访问:
JAVA基础篇(9)_第2张图片

TCP通信: 在JDK中提供了两个类用于实现TCP程序,一个是Socket类,用于表示客户端,另一个是ServerSocket类,用于表示服务器端。通信时,首先创建代表服务器端的ServerSocket对象,该对象相当于开启一个服务,并等待客户端的连接,然后创建代表客户端的Socket对象向服务器端发出连接请求,服务器端响应请求,两者建立连接开始通信。

例子:

public class TcpServer{//服务器端
	public static void main(String args[]) throw Exception
	{
		ServerSocket serversocket=new ServerSocket(8080);//建立连接端口为8080
		Socket socket=serversocket.accept();//Socket点接收
		InputStream is=socket.getInputStream();//获取输入流
		OutputStream os=socket.getOutputStream();//获取输出流
		byte[] bt=new byte[1024];//创建一个1024字节长度的字节
		int length=is.read(bt);//将输入流中数据读入到bt里面中
		System.out.println(new String(bt,0,length));
		os.write("ok".getByte());
		os.close();
		is.close();
		socket.close();
	}
}

------------------------------------------------------------------
public class Tcpclient{	
	public void main(String args[]) throw Exception
	{
		Socket socket=new Socket("127.0.0.0",8080);
		InputStream is=socket.getInputStream();//获取输入流
  		OutputStream os=socket.getOutputStream();//获取输出流
  		os.write("yes".getByte());
  		byte[] byt=new byte[200];
  		int length=is.read(byt);
  		System.out.println(new String(byt,0,length));
  		os.close();
  		is.close();
  		socket.close();
	}
}

注意:InetAddress为ip地址。

你可能感兴趣的:(java基础,java)