基本概念
套接字:源IP地址和目标IP地址以及源端口号和目标端口号的组合成为套接字。其用于标识客户端请求的服务器和服务
网络编程:通过使用套接字来达到进程间通信目的的编程
IP:在互联网中定位是哪一台主机
port(端口):在某一台主机中唯一表示某个程序,所以在同一台电脑重,端口是不能相同的

进程间的通信:
1.在同一台电脑重,A进程和B进程相互通信
2.在网络中(外网/内网),A电脑中的aa程序和B电脑中的bb程序相互通信(有网络连接)

网络编程的API在java.net包中

网络编程的三要素:IP地址,端口,协议(数据传递/交互的规则)

Socket:此类实现客户端套接字,套接字是两台机器间通信的端点

IP
网络之间互连的协议,在java中使用InetAddress类表示
IP的版本:IPv4,IPv6
IP地址编址方案:将IP空间划分为A、B、C、D、E五类,其中A、B、C是基本类,D、E类作为主播和保留使用
A类:10.0.0.0–10.255.255.255
B类:172.16.0.0–172.31.255.255
C类:192.168.0.0–192.168.255.255
InetAddress.getLocalHost();//返回本机IP
InetAddressgetLocalHost().isReachable(1000);是否可以连接访问,1000毫秒为等待时间

端口
端口可以认为是设备与外界通讯交流的出口。端口可分为虚拟端口和物理端口,其中虚拟端口指计算机内部或交换机路由器内的端口,不可见。

协议
网络协议的简称,是通信计算机双方必须共同遵从的一组约定,如:怎么建立连接,怎么互相识别,只有遵守这个约定,计算机之间才能相互通信交流。它的三要素是:语法、语义、语序
(1)语法:数据与控制信息的结构或格式
(2)语义:需要发出何种控制信息,完成何种动作以及做出何种响应
(3)时序:时间顺序的详细说明

http--超文本传输协议
https--用安全套接字层传送的超文本传输协议
ftp--文件传输协议
mailto--电子邮件地址
file--当地电脑或网上分享的文件物理层:以太网、调制解调器
数据链路层:DTM、STP
网络层协议:ICMP、IGMP
传输层协议:TCP、UDP
应用层协议:HTTP、SMTP**URL和URI的区别**
URI:表示统一资源定位的描述符,可以简单理解为:就是一个网络地址,不能进行操作
URL:表示统一资源定位符网络上的数据的编码和解码操作:
URLEncoder:编码
URLDecoder:解码
String msg="测试string";
String str=URLEncoder.encode(msg,"UTF-8");//编码
msg=URLDecoder.decode(str,"UTF-8");解码

网络编码的两种协议
TCP、UDP
TCP:面向连接(经历三次握手)、传输可靠(保证数据正确性,保证数据顺序)、用于传输大量数据(流模式)、速度慢,建立连接需要开销较多时间和系统资源
UDP:面向非连接、传输不可靠(丢包【数据丢失】)、用于传输少量数据(数据包模式)、速度快

TCP简单程序
服务端

public class Server{public static void main(String []args) throws Exception{String data="这是服务端的响应信息";ServerSocket server=new ServerSocket(8081);while(true){Socket client=server.accept();System.out.println("客户端的端口为"+client.getInetAddress());PrintStream out=new PrintStream(client.getOutputStream);out.println(data);out.close();}}
}

客户端

public class Client{public static void main(String) throws Exception{Socket client=new Socket("localhost",8081);Scanner sc=new Scanner(Client.getInputStream);while(sc.hasNextLine){String line=sc.nextLine();System.out.println(line);}sc.close();client.close();}
}

UDP简单程序
接收端

public class Receive{//创建接收对象DatagramSocket receiver=new DatagramSocket(10000);byte []buffer=new byte[1024];//接收数据DatagramPacket dp=new DatagramPacket(buffer,1024);receiver.receive(dp);//获取接收数据String msg=new String(dp.getData(),0,dp.getLength());System.out.println("发送过来的数据"+msg);      }
}

发送端

public class Send(){public static void main(String []args) throws Exception{String data="这是发送到接收端的数据";//创建发送端对象DatagramSocket sender = new DatagramSocket(10001);//发送数据DatagramPacket dp=new DatagramPacket(data.getBytes(),data.getBytes().length,//发送数据的长度(字节数)InetAddress.getLocalHost(),//发送给哪一个IP10000);//发送给哪一个端口程序sender.send(dp);sender.close();}
}

网络编程总结--小码哥java相关推荐

  1. naarray查询 swift_从入门到精通Swift编程(完整 未加密 小码哥) [16.3G]

    目录:/从入门到精通Swift编程(完整 未加密 小码哥) [16.3G] : U! s1 a8 i- s+ O, c7 i      ┣━━01-基础语法.汇编初探 [367.2M]# D% l* ...

  2. 零基础轻松学python pdf 小码哥_零基础轻松学Python

    零基础轻松学Python电子书 Python之父Guido van Rossum力荐的Python门书.本书以通俗易懂的语言.好玩有趣的案例让读者轻轻松松.循序渐地从零始掌握Python 3 编程.本 ...

  3. 【Java网络编程与IO流】Java之Java Servlet详解

    Java网络编程与IO流目录: [Java网络编程与IO流]Java中IO流分为几种?字符流.字节流.缓冲流.输入流.输出流.节点流.处理流 [Java网络编程与IO流]计算机网络常见面试题高频核心考 ...

  4. 你好2017! 再见2015, 再见小码哥!

    一根筋教育总监李南江致全体同仁的一封公开信 各位同仁,同学们: 大家好! 2015年的今天我发布了一篇日志"决定加入一个全新的IT培训品牌小码哥(中英双语版)", 怀揣着对教育的热 ...

  5. 小码哥iOS--玩转【斗鱼直播APP】系列之直播总体概览

    直播总体概览 概述 直播的现状 2016年,是一个直播年.直播行业快速发展,同时也滋生了大大小小上千家相关的公司. 中国互联网络信息中心发布的报告显示,截至今年6月,我国网络直播用户规模达到3.25亿 ...

  6. 小码哥考研技巧(求背单词长度的最大期望)

    输入: 3 100 6 100 8 100 10 输出: 326.12 考点:1.求最大期望的话需要对n个单词的长度和认识概率进行动态数组排序 2.对精度有所要求 理论解析:无论小码哥有没有背到认识的 ...

  7. 【Java网络编程与IO流】Java中IO流分为几种?字符流、字节流、缓冲流、输入流、输出流、节点流、处理流

    Java网络编程与IO流目录: [Java网络编程与IO流]Java中IO流分为几种?字符流.字节流.缓冲流.输入流.输出流.节点流.处理流 [Java网络编程与IO流]计算机网络常见面试题高频核心考 ...

  8. 百度松果 小码哥考研小技巧 (概率期望)

    题目描述 要考研了,小码哥非常焦急,他要开始背英语单词,每个单词的长度是lil_ili​ ,小码哥有pipipi的概率认识这个单词,小码哥要从一个有nnn个单词的总清单里按顺序的背单词,小码哥有一个认 ...

  9. 03小码哥通讯录(数据存储)

    // // XMGContact.m // 小码哥通讯录 #import "XMGContact.h"@implementation XMGContactstatic NSStri ...

最新文章

  1. 传蔚来计划回国内科创板上市,关闭硅谷办公室
  2. HDU 2087 (KMP不可重叠的匹配) 花布条
  3. 用vhdl实现4位加减法计数器_32位加减法器设计
  4. python do while语句_python控制语句执行流程(while)
  5. STM32H7---高速缓存Cache(二)
  6. 玩转SpringBoot 2 之项目启动篇
  7. 蘋果春季發布會一周之後
  8. layui框架简单解读,为什么要使用layui框架,layui框架的好处,后端程序员快速学习掌握layui框架技术型文档博文,layui学习笔记,快速掌握前端技术框架
  9. pdf 编辑器 linux
  10. python车辆型号识别_汽车型号和款式的识别 如何通过车架号来识别车的型号款式?查汽车型号...
  11. 服务器多开虚拟,个人服务器多开虚拟主机
  12. 什么是带内管理 带外管理?
  13. poj-1069(三角形和六边形)(转)
  14. unity图片指定任意不规则区域显示
  15. QCC512x QCC302x 延时函数 (阻塞与非阻塞)
  16. 快递物流管理系统(SSM,JQUERY-EASYUI,MYSQL)
  17. Swiper 轮播插件
  18. 大数据分析师的沟通技巧
  19. 如何使用N1盒子实现自动撸豆
  20. Ipad越狱注意事项

热门文章

  1. 【跟学C++】C++STL标准模板库——算法详细整理(下)(Study18)
  2. 计算机音乐致爱丽丝,致爱丽丝 MIDI File Download :: MidiShow
  3. 解决Windows挂起状态
  4. HCNP——LSA头部
  5. C# 导出 Excel 的各种方法总结
  6. C语言中实现四舍五入
  7. Elasticsearch集群的搭建与管理
  8. 定了——2024年底,青岛将建设七条139公里地铁线路
  9. OkHttp上传文件和图片操作
  10. 信号完整性研究系列--什么是地弹