网络编程
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的更多相关文章

  1. 网络编程-Java中的Internet查询

    前提 在深入理解URL.URI等概念,或者学些Socket相关的知识之,有必要系统理解一下Internet相关的一些基础知识. Internet地址 连接到Internet(因特网)的设备称为节点(n ...

  2. C++网络编程 Java网络编程

    C++ MFC C++ STL C++ 模板 C++ DLL C++ OpenGL C++ OSG C++ GIS (GRASS QGIS POSTGRE GDAL/OGR) ____________ ...

  3. Java - 网络编程完全总结

    本文主要是自己在网络编程方面的学习总结,先主要介绍计算机网络方面的相关内容,包括计算机网络基础,OSI参考模型,TCP/IP协议簇,常见的网络协议等等,在此基础上,介绍Java中的网络编程. 一.概述 ...

  4. 【转载】Java 网络编程

      本文主要是自己在网络编程方面的学习总结,先主要介绍计算机网络方面的相关内容,包括计算机网络基础,OSI参考模型,TCP/IP协议簇,常见的网络协议等等,在此基础上,介绍Java中的网络编程. 一. ...

  5. Java学习:网络编程总结

    Java网络编程总结 一.概述 计算机网络是通过传输介质.通信设施和网络通信协议,把分散在不同地点的计算机设备互连起来,实现资源共享和数据传输的系统.网络编程就就是编写程序使联网的两个(或多个)设备( ...

  6. day05 Java网络编程socket 与多线程

    java网络编程 java.net.Socket Socket(套接字)封装了TCP协议的通讯细节,是的我们使用它可以与服务端建立网络链接,并通过 它获取两个流(一个输入一个输出),然后使用这两个流的 ...

  7. 自定义异常、Java网络编程

    day04 throw关键字 throw用来对外主动抛出一个异常,通常下面两种情况我们主动对外抛出异常: 1:当程序遇到一个满足语法,但是不满足业务要求时,可以抛出一个异常告知调用者. 2:程序执行遇 ...

  8. javaSE学习笔记(16)---网络编程

    javaSE学习笔记(16)---网络编程 基本概念 如今,计算机已经成为人们学习.工作.生活必不可少的工具.我们利用计算机可以和亲朋好友网上聊天,也可以玩网游.发邮件等等,这些功能实现都离不开计算机 ...

  9. Java - 网络编程

    Java的网络编程学习,关于计算机基础的学习参考:计算机网络基础学习 - sqh.     参考:  

随机推荐

  1. IDEA中创建maven web项目

    本文将带你一路从IDEA中maven的配置到创建maven web项目,掌握IDEA中maven的使用. 一.IDEA中配置maven 开发中一般我们使用自己下载的maven,不使用IDEA工具自带的 ...

  2. SpringDataJpa——JpaRepository查询功能(转)

    1.JpaRepository支持接口规范方法名查询.意思是如果在接口中定义的查询方法符合它的命名规则,就可以不用写实现,目前支持的关键字如下. Keyword Sample JPQL snippet ...

  3. FreeSql (二十三)分组、聚合

    IFreeSql fsql = new FreeSql.FreeSqlBuilder() .UseConnectionString(FreeSql.DataType.MySql, "Data ...

  4. Android Q 正式命名为 Android 10

    根据官方博文,谷歌已经公布了 Android Q 的名称,它并不是想以前一样,以甜食命名,也不是以任何以字母 Q 开头来命名,而是简单称它为 Android 10. 该公司表示,它正在改变其发布版本的 ...

  5. rocketmq学习(一) rocketmq介绍与安装

    1.消息队列介绍 消息队列本质上来说是一个符合先进先出原则的单向队列:一方发送消息并存入消息队列尾部(生产者投递消息),一方从消息队列的头部取出消息(消费者消费消息).但对于一个成熟可靠的消息队列来说 ...

  6. Android Studio 3.1.3填坑之路

      昨天编写程序的时候,遇到了一个非常令人头疼的BUG,如下图:   标题栏和里面的内容都消失了,这对于一个非常在乎排版的软件来说简直就是晴空霹雳,搞了好长时间,终于在今天找到解决方法,原来是升级搞的 ...

  7. Ubuntu python-matplotlib安装couldn't connect to display ":0.0"

    先卸载旧的matplotlib库(sudo pip3 uninstall matplotlib),再利用命令 sudo apt-get install python-matplotlib安装,自动安装 ...

  8. 容器时代的持续交付工具---Drone:Drone介绍与安装

    Drone:Drone is a Container-Native, Continuous Delivery Platform. 官方给的定义,从上面的定义可以得出两个关键点: 1,Container ...

  9. centos下U盘重装windows

    当前机器使用的都是centos系统,后来想使用windows,这时候就需要在centos下去安装windows系统啦. 当然是采用U盘安装啦,先准备U盘,U盘数据先备份以免丢失. 第一步:制作U盘启动 ...

  10. 使用uEdit时,在线管理图片功能不可用

    把所有的配置文件都配置好了,uedit的在线管理功能图片还是不可用,看了一下源码: 是的,它在img的src属性后边的图片上加上了参数,那肯定不能用啊,所以修改源文件image.js.直接搜索noCa ...