java网络编程

xiaoxiao2021-02-27  243

端口: 1.用于区分不同应用程序 2.端口号范围为0~65535,其中0~1023为系统所保留 3.IP地址和端口号组成了所谓的socket,socket是网络上运行的程序之间的双向通信链路的终结点(终端),是TCP和UDP的基础

常用的端口号,http:80  ftp:21  telnet:23

java中提供网络功能的四大类: 1.Inetaddress:用于标识网络上的硬件资源 2.URL:统一资源定位符 通过URL可以直接读取或写入网络上的数据 3.Socket:使用TCP协议实现网络通信的Socket相关的类 4.Datagram:使用UDP协议,将数据保存在数据报中,通过网络进行通信

InetAddress无构造方法,也就无法创建对象通过静态方法获取对象

InetAddress 类用于标识网络上的硬件资源,实际上主要用来表示IP地址。

InerAddress实例获取:     1、通过主机名和ip地址来获取 。        InetAddress.getByName("机器名");        InetAddress.getByAddress(ip地址);     2、也可通过getLocalHost()方法来获取实例。

URL类常用方法:(?后面表示参数,#后面表示锚点) .getProtocol() 返回协议 .getHost() 返回主机名 .getPort() 返回端口号,如果未指定端口号,则使用默认的端口号(80),此时返回-1。 .getPath() 返回文件路径

TCP协议是面向连接、可靠地、有序的。以字节流的方式发送数据。 基于TCP协议实现网络通信的类 客户端的Socket类 服务器端的ServerSocket类

Socket通信实现步骤 1.创建ServerSocket和Socket 2.打开链接到Socket的输入/输出流 3.按照协议对Socket进行读/写操作 4.关闭输入输出流、关闭Socket

IP地址和端口号组成了Socket

基于socket的通信

客户端:

try { //1.创建客户端Socket,指定服务器的端口 Socket socket = new Socket("localhost", 8890); //2.获取输出流,向服务器端发送信息 OutputStream os = socket.getOutputStream();//字节输出流 PrintWriter pw = new PrintWriter(os);//将输出流包装为打印流 pw.write("用户名:admin;密码:123"); pw.flush(); socket.shutdownOutput(); //3.关闭资源 pw.close(); socket.close(); os.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }

服务器端:

try { //1.创建一个服务器端Socket,即ServerSocket,指定绑定的端口,并监听此端口 ServerSocket serverSocket=new ServerSocket(8888); //2.调用accept()方法开始监听,等待客户端的链接 System.out.println("***服务器即将启动,等待客户端的链接***"); Socket socket=serverSocket.accept();//阻塞状态,侦听请求 //3.获取输入流,并读取客户端信息 InputStream is=socket.getInputStream();//字节输入流 InputStreamReader isr=new InputStreamReader(is);//将字节流转换为字符流 BufferedReader br=new BufferedReader(isr);//为输入流添加缓冲 String info=null; while((info=br.readLine())!=null){//循环读取客户端信息 System.out.println("我是服务器,客户端说:"+info); } socket.shutdownInput();//关闭输入流 //4.关闭资源 br.close(); isr.close(); is.close(); socket.close(); serverSocket.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }

还希望各位大神来吐槽。。。

转载请注明原文地址: https://www.6miu.com/read-8897.html

最新回复(0)