网络编程
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. MyBatis中#{}和${}的区别详解

    首先看一下下面两个sql语句的区别: <select id="selectByNameAndPassword" parameterType="java.util.M ...

  2. 实验吧CTF练习题---WEB---头有点大解析

    实验吧web之头有点大   地址:http://www.shiyanbar.com/ctf/29 flag值:HTTpH34der     解题步骤: 1.进入解题界面,看提示 2.说提示很多,再提示 ...

  3. .netcore 使用阿里云短信

    准备工作 阿里云上申请短信服务 创建短信应用.签名.短信模板并申请审核,如果审核不通过,接口是调不通的. 配置专门用来发短信的accessKeyId和 accessKeySecret 开始开发 下载安 ...

  4. apache ignite系列(二):配置

    ignite有两种配置方式,一种是基于XML文件的配置,一种是基于JAVA代码的配置: 这里将ignite常用的配置集中罗列出来了,一般建议使用xml配置. 1,基于XML的配置 <beans ...

  5. 04.Django基础四之模板系统

    一 语法 模板渲染的官方文档 关于模板渲染你只需要记两种特殊符号(语法): {{ }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 二 变量 在Django的模板语言中按此语法使用:{ ...

  6. 阿里云CentOS7.3服务器通过Docker安装Nginx

    前言 小编环境: 阿里云CentOS7.3服务器 docker 下面分享一次小编在自己的阿里云CentOS7.3服务器上使用Docker来安装Nginx的一次全过程 温馨小提示: 如果只是希望单纯使用 ...

  7. EF指定更新字段

    使用EF做更新时,若没有进行跟踪会默认全字段更新,那怎么做到只更新我们想要更新的字段呢? /// <summary> /// 修改指定属性的单条数据 /// </summary> ...

  8. Java程序语言的后门-反射机制

    在文章JAVA设计模式-动态代理(Proxy)示例及说明和JAVA设计模式-动态代理(Proxy)源码分析都提到了反射这个概念. // 通过反射机制,通知力宏做事情 method.invoke(obj ...

  9. 深入全面理解面向对象的 JavaScript

    深入全面理解面向对象的 JavaScript (原著: 曾 滢, 软件工程师, IBM,2013 年 4 月 17 日) JavaScript 函数式脚本语言特性以及其看似随意的编写风格,导致长期以来 ...

  10. JAVA Atm测试实验心得

    通过一个假期的自学,完成了老师布置的样卷任务.使用Escipse编写一个学生成绩的管理系统. 一开始两眼摸黑,通过观看Java课程的视频,地址:https://www.bilibili.com/vid ...