网络编程java
网络编程
1.网络编程概述
(1).C/S结构:指客户端与服务端结构,常见程序QQ;
(2).B/S结构:指浏览器和服务器的结构;
2.网络编程的三要素:
*IP地址
*端口号
*通信协议(UDP/TCP)
*IP地址类(InetAddress类)
一个IP地址就对应一个InetAddress类的对象。
InetAddress类使用静态方法
(1).获得本地主机的IP地址对象
InetAddress ip = InetAddress.getLocalHost();
ip.getHostName();获取主机名
ip.getHostAddress();获得ip地址字符串
根据IP地址字符串或主机名获得IP地址对象
InetAddress ip02 = InetAddress.getByName("ip地址");
UDP协议(用户数据包协议)
1.UDP协议的特点:
*面向无连接协议
* 只管发送,不确认对方是否收到。
* 基于数据包(报)进行数据传输。
* 发送数据大小限制在64k以内。
* 因为面向无连接,速度快但不可靠
2.UDP使用场景
* 即时通讯(QQ,微信,陌陌.....)
* 在线视频
* 语言通话
3.用法:
*发送端
(1).创建数据包对象
DatagramPacket dp = new DatagramPacket(要发送的内容,长度,接收端的ip地址,端口号 );
(2).创建发送端的发送对象
DatagramSocket ds=new DatagramSocket();
ds.send(dp);发送数据包
ds.close();关闭资源
*接收端
(1).创建接收端的Socket对象
DatagramSocket ds=new DatagamSocket(端口号);
// 创建字节数组
byte[] buf = new byte[1024];
// 创建数据包对象
DatagramPacket dp = new DatagramPacket(buf,buf.length);
// 接收数据包
ds.receive(dp);
// 获得实际接收内容的长度
int len = dp.getLength();
// 输出内容
System.out.println(new String(buf,0,len));
// 获得发送端的IP和端口号
String sendIP = dp.getAddress().getHostAddress();
int sendPort = dp.getPort();
System.out.println("sendIP = " + sendIP);
System.out.println("sendPort = " + sendPort);
TCP协议(传输控制协议)
1.TCP协议的特点
* 面向连接的协议。
* 通过三次握手建立连接,形成数据传输通道。
* 通过四次挥手断开连接
* 基于IO流进行数据传输
* 传输数据大小没有限制
* 因为面向连接,速度慢但可靠
2.TCP协议使用场景
* 文件上传和下载
* 邮件发送和接收
* 远程登录
TCP协议通讯相关的两个类
* Socket
* 客户端Socket
* 一个该类的对象就代表一个客户端程序
* ServerSocket
* 服务器端Socket
* 一个该类的对象就代表一个服务器程序
Socket类构造方法
* Socket(String host, int port)
* 根据服务器IP地址和端口号创建客户端Socket对象
* 一旦执行该方法就会立即连接服务器,如果连接失败直接抛异常。
* host:服务器端IP地址
* port:服务器端的端口号
Socket类常用方法
* OutputStream getOutputStream(); 获得字节输出流对象
* InputStream getInputStream(); 获得字节输入流对象
用法:
客户端
// 根据服务器IP地址和端口号创建客户端Socket对象
Socket socket = new Socket("192.168.106.45", 8888);
// 要发送的内容
String content = "约吗,TCP服务器端";
// 获得字节输出流对象
OutputStream out = socket.getOutputStream();
// 往服务器端输出数据
out.write(content.getBytes());
// 获得字节输入流对象
InputStream in = socket.getInputStream();
// 创建字节数组:用来存储服务器返回的数据
byte[] buf = new byte[1024];
// 读取服务器端返回的数据
int len = in.read(buf);
System.out.println("len = " + len);
System.out.println(new String(buf,0,len));
// 关闭Socket断开连接
socket.close();
服务端
ServerSocket类构造方法
* ServerSocket(int port)
* 根据指定的端口号创建服务器Socket对象
* 相当于开启一个服务器
ServerSocket类常用方法
* Socket accept();
* 等待客户端连接并获得与客户端关联的Socket
* 是一个阻塞方法,如果没有客户端连接则当前线程的代码无法继续运行。
用法;// 根据指定的端口号创建服务器Socket对象
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("开启服务器......");
// 等待客户端连接并获得与客户端关联的Socket
Socket socket = serverSocket.accept();
// 获得字节输入流对象
InputStream in = socket.getInputStream();
// 创建字节数组:用来存储客户端发送过来的数据
byte[] buf = new byte[1024];
// 读取客户端发送的数据
int len = in.read(buf);
System.out.println("len = " + len);
System.out.println("接收到的数据 = " + new String(buf,0,len));
// 获得字节输出流对象
OutputStream out = socket.getOutputStream();
// 往客户端输出数据
out.write("不约而同".getBytes());
// 关闭服务器:在实际开发中服务器一般是不关闭的。
serverSocket.close();
网络编程java的更多相关文章
- 网络编程-Java中的Internet查询
前提 在深入理解URL.URI等概念,或者学些Socket相关的知识之,有必要系统理解一下Internet相关的一些基础知识. Internet地址 连接到Internet(因特网)的设备称为节点(n ...
- C++网络编程 Java网络编程
C++ MFC C++ STL C++ 模板 C++ DLL C++ OpenGL C++ OSG C++ GIS (GRASS QGIS POSTGRE GDAL/OGR) ____________ ...
- Java - 网络编程完全总结
本文主要是自己在网络编程方面的学习总结,先主要介绍计算机网络方面的相关内容,包括计算机网络基础,OSI参考模型,TCP/IP协议簇,常见的网络协议等等,在此基础上,介绍Java中的网络编程. 一.概述 ...
- 【转载】Java 网络编程
本文主要是自己在网络编程方面的学习总结,先主要介绍计算机网络方面的相关内容,包括计算机网络基础,OSI参考模型,TCP/IP协议簇,常见的网络协议等等,在此基础上,介绍Java中的网络编程. 一. ...
- Java学习:网络编程总结
Java网络编程总结 一.概述 计算机网络是通过传输介质.通信设施和网络通信协议,把分散在不同地点的计算机设备互连起来,实现资源共享和数据传输的系统.网络编程就就是编写程序使联网的两个(或多个)设备( ...
- day05 Java网络编程socket 与多线程
java网络编程 java.net.Socket Socket(套接字)封装了TCP协议的通讯细节,是的我们使用它可以与服务端建立网络链接,并通过 它获取两个流(一个输入一个输出),然后使用这两个流的 ...
- 自定义异常、Java网络编程
day04 throw关键字 throw用来对外主动抛出一个异常,通常下面两种情况我们主动对外抛出异常: 1:当程序遇到一个满足语法,但是不满足业务要求时,可以抛出一个异常告知调用者. 2:程序执行遇 ...
- javaSE学习笔记(16)---网络编程
javaSE学习笔记(16)---网络编程 基本概念 如今,计算机已经成为人们学习.工作.生活必不可少的工具.我们利用计算机可以和亲朋好友网上聊天,也可以玩网游.发邮件等等,这些功能实现都离不开计算机 ...
- Java - 网络编程
Java的网络编程学习,关于计算机基础的学习参考:计算机网络基础学习 - sqh. 参考:
随机推荐
- Python高效编程技巧实战 实战编程+面试典型问题 中高阶程序员过渡
下载链接:https://www.yinxiangit.com/603.html 目录: 如果你想用python从事多个领域的开发工作,且有一些python基础, 想进一步提高python应用能力 ...
- Node.js+Navicat for MySQL实现的简单增删查改
前提准备: 电脑上必须装有服务器环境,Navicat for MySQL(我用的是这款MySQL,可随意),Node环境 效果如图所示: 源码地址: GitHub:https://github.com ...
- AutoCompleteTextView自动完成文本框
AutoCompleteTextView是从EditText派生出来的,比普通编辑框多了一个功能,当用户输入一定字符后,自动完成文本框会显示一个下拉单,供用户选择,当选中一个后,被选中的内容会显示在文 ...
- Winform中对自定义xml配置文件进行Xml节点的添加与删除
场景 Winform中自定义xml配置文件后对节点进行读取与写入: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10053213 ...
- spring mvc Response header content type
Xml代码 <bean class ="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAd ...
- 最基础的Nginx教学
文章原创于公众号:程序猿周先森.本平台不定时更新,喜欢我的文章,欢迎关注我的微信公众号. Nginx同Apache一样都是一种WEB服务器.基于REST架构风格,以统一资源描述符URI或者统一资源定位 ...
- Windows Docker 部署 Spring Boot 项目
目录 Docker Configuration Config IDEA Plugin Create Spring Boot Project Containerize It Use Dockerfile ...
- Linux配置部署_新手向(四)——Redis安装与配置
前言 配置完mysql之后,我们来紧接着安装redis,毕竟这些不用太多的思考,就是命令执行,配置文件,连接测试. 安装 首先,我们要看安装哪个版本,可以在Redis官网看看我们安装哪个版本. 在之前 ...
- validator 自动化校验
温馨提示 请收藏再看.此文篇幅太长,你短时间看不完:此文干货太多,错过太可惜. 示例代码可以关注逸飞兮(公众号)回复jy获取. 收获 讲解详细:能让你掌握使用 hibernate-validator ...
- 离线环境下进行pip包安装
内网服务器不能上网,但是需要在上面安装python-package 通过另外一台能上网的主机B 1. 下载需要离线安装的Packages 在B上执行如下命令: 安装单个Package $ pip in ...