网络编程

网络的概念

网络:一组相互连接的计算机

  • 由多台计算机组成
  • 使用物理线路进行连接

网络编程三要素

IP地址:唯一标识网络上的每一台计算机,两台计算机之间通信的必备要素

端口号:计算机中应用的标号(代表一个应用程序),0-1024系统使用或保留端口 ,有效端口0-65536

通信协议:通信的规则 TCP,UDP

网络模型

网络模型一

OSI参考模式:开放系统互连参考模型(Open System Interconnect)

网络模型二

TCP/IP参考模型:传输控制/网际协议 Transfer Controln Protocol/Internet Protocol

IP地址的表示方式

▪ IP 地址:32位,由4个8位二进制数组成

▪ IP表示方法:点分十进制

▪ IP地址 = 网络ID +主机ID
– 网络ID:标识计算机或网络设备所在的网段
– 主机ID:标识特定主机或网络设备

IP地址的分类

▪ 地址类用于指定网络 ID 并在网络 ID 和主机 ID 之间提供分隔方法

▪ IP 地址类包括:
– A 类:1-126 (0 段和 127 段不使用 )
– B 类:128-191
– C 类:192-223
– D 类:224-239
– E 类:240-255

特殊的IP地址

▪ 0.0.0.0:本机

▪ 127.0.0.1:本机回环地址,用于本机测试

▪ 255.255.255.255:当前子网,一般用于向当前子网广播信息

IP地址所对应的对象->InetAddress

import java.net.InetAddress;
import java.net.UnknownHostException;public class InetAddressDemo {public static void main(String[] args) {try {InetAddress localHost = InetAddress.getLocalHost();System.out.println(localHost);InetAddress byName = InetAddress.getByName("www.baidu.com");System.out.println(byName);System.out.println(byName.getHostAddress());System.out.println(byName.getHostName());} catch (UnknownHostException e) {e.printStackTrace();}}
}

端口

端口是虚拟的概念,并不是说在主机上真的有若干个端口。通过端口,可以在一个主机上运行多个网络应用程序。

传输协议

UDP:相当于収短信(有字数限制),不需要建立连接,数据报的大小限制在64k内,效率较高,不安全,容易丢包

TCP:相当于打电话,需要建立连接,效率相对比较低,数据传输安全,三次握手完成。(点名->答到->确认)

Socket套接字

▪ 网络上的两个程序通过一个双向的通信连接实现数据的交换

▪ 这个连接的一端称为一个socket。

▪ Java中使用Socket完成TCP程序的开収,使用此类可以方便的建立可靠的、双向的、持续性的、点对点的通讯连接

▪ 在Socket的程序开収中,服务器端使用ServerSocket等待客户端的连接,

▪ 对于java的网络程序来讲,每一个客户端都使用一个Socket对象表示

基于TCP协议的Socket编程

进行网络通信时,Socket需要借助数据流来完成数据的传递工作

package client;import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;/*** 客户端向服务端发送数据*/
public class Client {public static void main(String[] args) throws IOException {//创建Socket对象,实际上是开启现实io的虚拟接口(此接口不是java中的接口,而是类似于网线的插槽)//需要指定数据接收方的IP地址和端口号Socket client = new Socket("localhost",10086);//获取输出流对象,向服务端发送数据OutputStream outputStream = client.getOutputStream();//将输出流对象进行包装DataOutputStream dataOutputStream = new DataOutputStream(outputStream);//传输数据dataOutputStream.writeUTF("Hello,你好");//关闭流dataOutputStream.close();outputStream.close();client.close();}
}
package server;import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;/****/
public class server {public static void main(String[] args) throws IOException {//服务端需要使用serverSocket来开放本地端口ServerSocket serverSocket = new ServerSocket(10086);//需要接受client传输过来的数据,需要定义socket对象Socket server = serverSocket.accept();//通过server获取输入流对象InputStream inputStream = server.getInputStream();//对输入流做包装DataInputStream dataInputStream = new DataInputStream(inputStream);//读取相应的数据String str = dataInputStream.readUTF();//关闭所有的流操作dataInputStream.close();inputStream.close();server.close();serverSocket.close();}
}

基于TCP协议的Socket编程

【java学习之路】(java SE篇)012.网络编程相关推荐

  1. 个人开发经历--我的java学习之路(学校篇)

    个人开发经历--我的java学习之路(学校篇) 个人介绍: 姓名: 不在这里说明 联系信息: 个人历程 jdbc阶段 sql生成器 一代代码生成器 servlet阶段 servlet项目中,sql生成 ...

  2. java学习之路---java学习的方法和java学习路线

    转载于: http://blog.csdn.net/zhangerqing 前段时间逛论坛,总会有很多新手很迷茫,问到:到底该怎么学好Java,这个问题很重要,尤其对于像我们这样大多数都是靠自学的人来 ...

  3. Java学习之路-----Java基础简介,基础语法,Java标识符,修饰符,关键字与注释

    这里写目录标题 Java简介 Java发展历程 Java语言平台版本 Java语言的特点 Java语言跨平台原理--JVM JRE和JDK JDK安装路径下的目录解释 Java基础语法 Java标识符 ...

  4. Java学习之路 -- Java怎么学?

    文章目录 java基础怎么学? 学完基础学什么? 几个常用框架学完学什么? MQ JVM的知识跑不掉 微服务等等 其他 数据结构和算法 java基础怎么学? 当时,作为懵懂的小白,大一学习了c和c++ ...

  5. java学习日记(9)———socket,网络编程的学习

    ---------------------- android培训.java培训.期待与您交流! ---------------------- ----------- 自己学习编程的时候当时还用了不少时 ...

  6. JAVA学习之路--基础篇三

    目录 关于Java中从键盘输入的语句 nextxxx().next().nextLine()的区别 语句 if和if else语句 Switch语句 for语句 while和do..while bre ...

  7. java学习之路目录(已完结)

    java学习之路目录(持续更新中-) 第一阶段 javaSE(完结) 序号 标题 内容 001 java初识 java语言特点.体系结构.运行机制 002 java SE基础语法 注释.关键字.变量. ...

  8. 我的Java学习之路2009-11-17

    -------------------------------2009年3月19日开始----------------------------- 下载JDK Myeclipse Netbeans JB ...

  9. 菜鸟haqima的Java学习之路第一天

    菜鸟haqima的Java学习之路第一天 导读:DOS命令 常用快捷键 Java的简单概述 (第一章 Java开发环境的搭建) 1.常用的DOS命令 1.1.怎么打开DOS命令窗口 win键+r(组合 ...

  10. Java学习之路02_选择方向_旺旺老师

    提示:请您先阅读第一部分:Java学习之路01_软件江湖_旺旺老师 第二部分:帮派之争 就好像玩游戏要先选择角色种族,进入江湖要先选择帮派,那搞软件开发也要选择方向.个人总结的软件开发的方向:嵌入式开 ...

最新文章

  1. 实战并发编程 - 09多线程Guarded Suspension模式案例实战
  2. 为什么`malloc`出来的内存也能当成对象正常使用
  3. python横坐标如何显示为月份_如何显示给定两个日期之间的所有月份?
  4. ios中静态库的创建和使用、制作通用静态库(Cocoa Touch Static Library)
  5. 设计模式示例_命令设计模式示例
  6. python文件系统_你应该知道的10个Python文件系统方法
  7. js组装知识(待续……)
  8. 使用 jQuery Mobile 与 HTML5 开发 Web App (四) —— jQuery Mobile 表单上
  9. WSL:适用于 Linux 的 Windows 子系统
  10. 实验四+074+林盼皇
  11. 智能优化算法:鸡群优化算法-附代码
  12. 平面判断两点连线是否交叉
  13. java jxta_java现在还支不支持jxta,怎么官方都没下载了?
  14. 定义方法-求矩形的面积
  15. uniapp 图片上传
  16. 电脑的wifi天线原理_无线网络 WIFI天线原理 (DIY天线知识学习)上文
  17. 新浪公司总裁兼首席执行官 曹国伟
  18. css设置全局内边距为0,重置CSS - 将填充和边距设置为0?
  19. VUE_v-lazy懒加载
  20. 关于零输入响应和零状态响应的想法

热门文章

  1. Qt窗口部件——QFrame/QAbstractButton/QLineEdit/QAbstractSpinBox/QAbstractSlider
  2. Java SQL 注入学习笔记
  3. django搭建一个小型的服务器运维网站-查看和修改服务器配置与数据库的路由...
  4. Leetcode学习成长记:天池leetcode基础训练营Task02链表
  5. (转)Docker 基础 : Dockerfile
  6. 数字后端基本概念介绍<Blockage Link>
  7. java mediator模式_Java实现中介者模式-Mediator Pattern
  8. matlabpython建模_参加数学建模用 MATLAB,还是 Python?
  9. linux 脚本 列表,shell -脚本 给出多个数据列表 执行任务
  10. 怎样使用OUTLOOK收发邮件   小雨