【网络编程】
2021/11/29 11:06:58
本文主要是介绍【网络编程】,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
网络编程
软件结构
- Client/Server(C/S结构)
- Browser/Server(B/S结构)
Windows系统中执行命令:
//查看占用8888端口号的进程PID netstat -aon|findstr 8888 //显示结果,找到占用8888端口号的PID TCP 0.0.0.0:8888 0.0.0.0:0 LISTENING 2696 //强制关闭(杀死) taskkill /F /pid 2696
注意,需要使用管理员的权限来运行命令窗口
Ubuntu系统中执行命令:
//查看占用8888端口号的进程PID netstat -anp | grep :8888 //显示结果,找到占用8888端口号的PID tcp 0 0 :::8888 :::* LISTEN 3626/java //强制关闭(杀死) kill -9 3626
TCP/IP编程
可靠的,面向右连接的
了解客户端和服务端的步骤;
ServerSocket
:服务端
- 创建客户端对象:
serverSocket=new ServerSocket(9909);
- 等待客户端发送socket:
Socket s=serverSocket.accept();
- 获取输入流输出流:
s.getOutputStream();
s.getInputStream();
- 包装流:缓冲流或者对象流
- 读数据写数据
- 关闭资源:
- 关闭流;
- 关闭severSocket.close();
Socket
:客户端
- 创建客户端对象:
Socket s=new Socket("127.0.0.1",9909);
- 获取输入输出流:
- 包装流:
- 读写数据:
- 关闭资源:
案例
package com.chapter12.classcode; import java.io.*; import java.net.ServerSocket; import java.net.Socket; public class TcpServer { //服务器端 public static void main(String[] args) { ServerSocket serverSocket=null; BufferedReader br=null; BufferedWriter bw=null; try { serverSocket=new ServerSocket(9909); System.out.println("等待客户端"); //等待客户端发送过来socket Socket s=serverSocket.accept(); System.out.println("拿到客户端的soket" + s); //读输入输出流 InputStream in = s.getInputStream(); //包装流 br=new BufferedReader(new InputStreamReader(in)); //读数据,写数据 String readLine = br.readLine();//会造成堵塞,一直等着读数据 System.out.println(readLine); // OutputStream out = s.getOutputStream(); // bw=new BufferedWriter(new OutputStreamWriter(out)); // bw.write("收到"); // bw.flush(); } catch (IOException e) { e.printStackTrace(); }finally { if (br!=null) { try { br.close(); } catch (IOException e) { e.printStackTrace(); } if (bw!=null) { try { bw.close(); } catch (IOException e) { e.printStackTrace(); } } }if (serverSocket!=null) { try { serverSocket.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
package com.chapter12.classcode; import java.io.*; import java.net.Socket; public class TcpClient { //客户端 public static void main(String[] args) { BufferedWriter bw=null; BufferedReader br=null; OutputStream os=null; Socket s=null; //创建socket try { s=new Socket("127.0.0.1",9909); //给服务器端写数据 os=s.getOutputStream(); //包装流 先把字节流转换成字符流 bw=new BufferedWriter(new OutputStreamWriter(os)); //读写数据 bw.write("hello world bw.flush(); /* InputStream in = s.getInputStream(); br=new BufferedReader(new InputStreamReader(in)); String s1 = br.readLine(); System.out.println(s1);*/ } catch (IOException e) { e.printStackTrace(); }finally { if (os!=null) { try { os.close(); } catch (IOException e) { e.printStackTrace(); } }if (bw!=null) { try { bw.close(); } catch (IOException e) { e.printStackTrace(); } }if (br!=null) { try { br.close(); } catch (IOException e) { e.printStackTrace(); } } if (s!=null) { try { s.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
先启动服务端,服务端会等待客户端启动然后建立连接,再启动客户端,
结果如下:
UDP编程
面向无连接的,不可靠的,高效率;
在UDP通信协议下,两台计算机之间进行数据交互,并不需要先建立连接,客户端直接往指定的IP和端 口号上发送数据即可,但是它并不能保证数据一定能让对方收到。
java.net.DatagramSocket
和 java.net.DatagramPacket
是UDP编程中使用到的俩个类,客户端 和服务器端都使用这个俩类
java.net.DatagramSocket
负责接收和发送数据
java.net.DatagramPacket
负责封装要发送的数据和接收到的数据
URL
URI(uniform resource identifier),统一资源标识符,用来唯一的标识一个资源。
URL(uniform resource locator),统一资源定位符,它是一种具体的URI,即URL可以用来标识一个资 源,而且还指明了如何定位这个资源。
例如,http://127.0.0.1/hello ,这就是一个URL,它不仅标识了一个资源,还能定位这个资源。
例如,/hello ,这就是一个URI,它只是标识了一个资源。
这篇关于【网络编程】的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现
- 2024-05-30我们小公司,哪像华为一样,用得上IPD(集成产品开发)?
- 2024-05-30java excel上传--poi
- 2024-05-30安装笔记本应用商店的pycharm,再安排pandas等模块,说是没有打包工具?
- 2024-05-29java11新特性
- 2024-05-29哪些无用敏捷指标正在破坏敏捷转型?
- 2024-05-29鸿蒙原生应用再新丁!新华社 入局鸿蒙
- 2024-05-29设计模式 之 迭代器模式(Iterator)