网络编程1、网络通讯要素1. IP地址:InetAddress网络中设备的标识。不易记忆,可用主机名。本地回环地址:127.0.0.1 主机名:localhost。2.IPV4数量已经不够分配,所以产生了IPV6。3.在没有连接互联网的情况,为了让访问本机方便,所以分配了一个默认的IP地址,也就是本地回环地址。4.通过ping 127.0.0.1可以测试网络是不是通,如果不通,可能是网卡出问题了。
2、端口号用于标识进程(应用程序)的逻辑地址,不同进程的标识。有效端口:0~65535,其中0~1024系统使用或保留端口。P.S.1、当一台计算机A向另一台计算机B发送QQ信息时,首先路由器通过数据包中的IP地址定位该信息发送到哪一台机器。然后计算机B接收到数据包后,通过此数据包中的端口号定位到发送给本机的QQ应用程序。2、所谓防火墙,其功能就是将发送到某程序端口的数据屏蔽掉以及将从该程序端口发出的数据也屏蔽掉。
3. 传输协议通讯的规则。常见协议:UDP、TCP。UDP的特点:将数据及源和目的封装成数据包中,不需要建立连接。每个数据报的大小限制在64k内。因无连接,是不可靠协议。不需要建立连接,速度快。应用案例:QQ、FeiQ聊天、在线视频用的都是UDP传输协议。TCP的特点:建立连接,形成传输数据的通道。在连接中进行大数据量传输。通过三次握手完成连接,是可靠协议。必须建立连接,效率会稍低。应用案例:FTP,File Transfer Protocol(文件传输协议)。P.S.InetAddress类中有一个静态方法:static InetAddress[] getAllByName(String host),此方法是在给定主机名的情况下,根据系统上配置的名称服务返回其IP地址所组成的数据。这是由于有些主机名对应的IP地址不唯一,如新浪、百度,都是服务器集群。域名解析,最先走是本地的hosts(C:\WINDOWS\system32\drivers\etc\hosts)文件,解析失败了,才去访问DNS服务器解析、获取IP地址。应用:通过hosts文件可以屏蔽游戏网站内容弹出,例如:在hosts文件中添加,127.0.0.1www.game18.com。4、UDP协议-发送端&接收端SocketSocket就是为网络服务提供的一种机制。通信的两端都有Socket。网络通信其实就是Socket间的通信。数据在两个Socket间通过IO传输。UDP传输DatagramSocket(用来发送和接收数据报包的套接字)与DatagramPacket(数据报包)。建立发送端,接收端。建立数据包。调用Socket的发送接收方法。关闭Socket。发送端与接收端是两个独立的运行程序。——————————————————————————————————————————————————————————————————————————————————————————UDP通讯演示:package udp.communication;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;public class Receive {public static void main(String[] args) throws IOException {// 建套接字对象DatagramSocket ds = new DatagramSocket(10086);// 建包对象DatagramPacket dp = new DatagramPacket(new byte[1024],1024);// 解析数据包while(true){ds.receive(dp);String line = new String(dp.getData(),0,dp.getLength());System.out.println("from"+dp.getAddress().getHostAddress()+" :"+line);}}}package udp.communication;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;public class Send {public static void main(String[] args) throws IOException {// 建立数据报对象DatagramSocket ds = new DatagramSocket();// 封装键盘录入信息BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String line = null;// 信息装包while ((line = br.readLine()) != null) {if("886".equals(line)){break;}DatagramPacket dp = new DatagramPacket(line.getBytes(),line.getBytes().length,InetAddress.getByName("192.168.31.248"),10086);// 发送包ds.send(dp);}// 释放资源}}P.S.由于UDP协议传输数据,只管发送数据,而不管接收端是否能够接收到数据。因此,应该首先启动接收端程序,再启动发送端程序。TCP协议-客户端&服务端客户端(Client)首先与服务端(Server)建立连接,形成通道(其实就是IO流),然后,数据就可以在通道之间进行传输,并且单个Server端可以同时与多个Client端建立连接。Socket和ServerSocket,建立客户端和服务器端.建立连接后,通过Socket中的IO流进行数据的传输。关闭socket。同样,客户端与服务器端是两个独立的应用程序。TCP客户端客户端需要明确服务器的ip地址以及端口,这样才可以去试着建立连接,如果连接失败,会出现异常。连接成功,说明客户端与服务端建立了通道,那么通过IO流就可以进行数据的传输,而Socket对象已经提供了输入流和输出流对象,通过getInputStream(),getOutputStream()获取即可。与服务端通讯结束后,关闭Socket。TCP服务端服务端需要明确它要处理的数据是从哪个端口进入的。当有客户端访问时,要明确是哪个客户端,可通过accept()获取已连接的客户端对象,并通过该对象与客户端通过IO流进行数据传输。当该客户端访问结束,关闭该客户端。————————————————————————————————————————————————————————————————————————————TCP演示package tcp.communication;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.net.Socket;import java.net.UnknownHostException;public class Sender {public static void main(String[] args) throws UnknownHostException,IOException {// 建立套接字对象Socket s = new Socket("192.168.31.248", 10086);// 获取输入流对象InputStream is = s.getInputStream();OutputStream os = s.getOutputStream();// 封装键盘录入信息String message = null;BufferedReader br = new BufferedReader(new InputStreamReader(System.in));BufferedReader feedback = new BufferedReader(new InputStreamReader(is));BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));while((message = br.readLine())!= null){if("886".equals(message))break;bw.write(message);bw.newLine();bw.flush();//接收反馈信息System.out.println(s.getInetAddress().getHostAddress()+" ... "+feedback.readLine());}// 发送结束信息s.shutdownOutput();// 释放资源s.close();}}package tcp.communication;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket;public class Receiver {public static void main(String[] args) throws IOException {// 建立Socket对象ServerSocket ss = new ServerSocket(10086);// 监听链接System.out.println("监听链接:");System.out.println(!ss.isClosed());// 获取输入流Socket s = ss.accept();// BufferedReader br = null;InputStream is = s.getInputStream();BufferedReader br = new BufferedReader(new InputStreamReader(is));// 建立文本,追加形式while (true) {// 解析信息System.out.println("等待消息:");String line = br.readLine();System.out.println(s.getInetAddress().getHostAddress() + " :"+ line);// copyToTxt(line);//复制到文本// 反馈信息System.out.println("tcp是否关闭:"+s.isClosed());if(!s.isClosed()){OutputStream os = s.getOutputStream();os.write("消息收到~~\r\n".getBytes());}}}private static void copyToTxt(String line) throws IOException {BufferedWriter bw = new BufferedWriter(new FileWriter("tcp.txt", true));bw.write(line);bw.newLine();bw.close();}}P.S.TCP协议传输数据必须先开服务端,再开客户端。否则,客户端根本连接不上服务端。———————————————————————————————————————————————————————————————————————————
6、 URL&URLConnectionURI:统一资源标示符。URL:统一资源定位符,也就是说根据URL能够定位到网络上的某个资源,它是指向互联网“资源”的指针。每个URL都是URI,但不一定每个URI都是URL。这是因为URI还包括一个子类,即统一资源名称(URN),它命名资源但不指定如何定位资源。7、常见网络结构1. C/S client/server特点:该结构的软件,客户端和服务端都需要编写。开发成本较高,维护较为麻烦。好处:客户端在本地可以分担一部分任务。例如,杀毒软件直接对本机文件进行杀毒。2. B/S browser/server特点:该结构的软件,只开发服务器端,不开发客户端,因为客户端直接由浏览器取代。开发成本相对低,维护更为简单。缺点:所有运算都要在服务端完成。

java 之 网络编程相关推荐

  1. Netty:Java 领域网络编程的王者

    一.简介 1. 课程背景 分布式系统的根基在于网络编程,而 Netty 是 Java 领域网络编程的王者. 2. 课程内容 第一部分 NIO 编程,三大组件 第二部分 Netty 入门学习,Event ...

  2. 你对Java网络编程了解的如何?Java BIO 网络编程 | Netty 前期知识

    一步一步走来,之前去学习了JUC并发编程知识,现在终于到Java IO网络编程啦,难啊. 一.BIO介绍 引入: 随着技术的发展,两个或以上的程序必然需要进行交互,于是提供了一种端到端的通信,相当于对 ...

  3. 四十六、深入Java的网络编程(下篇)

    @Author:Runsen @Date:2020/6/9 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...

  4. 四十五、深入Java的网络编程(上篇)

    @Author:Runsen @Date:2020/6/8 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...

  5. JAVA的网络编程【转】

    转自 http://www.cnblogs.com/springcsc/archive/2009/12/03/1616413.html 网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能 ...

  6. java的网络编程有用吗_十大有用但又偏执的Java编程技术

    java的网络编程有用吗 经过一段时间的编码(以我为例,大约20年左右,当您玩得开心时光飞逝),人们开始接受这些习惯. 因为,你知道... 任何可能出错的事情都会发生. 这就是为什么人们会采用&quo ...

  7. java中no1_【Java】-- 网络编程のNo.1

    在现有的网络中,网络通讯的方式主要有两种: TCP(传输控制协议)方式 UDP(用户数据报协议)方式 在网络通讯中,TCP方式就类似于拨打电话,使用该种方式进行网络通讯时,需要建立专门的虚拟连接,然后 ...

  8. 【零基础学Java】—网络编程(五十三)

    [零基础学Java]-网络编程(五十三) 一.软件结构 C/S结构:全称为Client/Server结构,是指客户端和服务器结构,常见的程序有QQ.迅雷等软件 B/S:全称为Browser/Serve ...

  9. Java面向对象 网络编程 上

     Java面向对象 网络编程 上 知识概要:                     (1)网络模型 (2)网络通讯要素 (3)UDP TCP 概念 (4)Socket (5)UDP TCP 传输 ...

  10. 什么是java socket_java 网络编程,Socket编程

    Java的网络编程主要涉及到的内容是Socket编程,那么什么是Socket呢?简单地说,Socket,套接字,就是两台主机之间逻辑连接的端点.TPC/IP协议是传输层协议,主要解决数据如何在网络中传 ...

最新文章

  1. 正则化技巧:标签平滑(Label Smoothing)以及在 PyTorch 中的实现
  2. 补充前几天测试用到的Linux命令
  3. 50 道 CSS 基础面试题及答案
  4. centos6.5 设置ssh无密码登录
  5. java7和java8切换_仍不切换到Java 8的6个理由
  6. .9-浅析webpack源码之NodeEnvironmentPlugin模块总览
  7. 用URLGather来管理和保存你的页面
  8. 字节跳动研发的云固件投入应用 首批装机200余台X86服务器
  9. BOOST 线程完全攻略 - 扩展 - 可被关闭的线程类
  10. lr 远程压力机部署安装
  11. 最新用python来操作mysql完全解析
  12. oracle登录卡,【Oracle连接问题】关于windows xp3上oracle连接登录卡住的问题
  13. php 股票数据 sina,使用Sina API获取新浪财经的证券股票数据接口(时价 K线等)
  14. 如何远程装服务器系统安装系统安装系统,远程在服务器上安装系统安装教程
  15. 【硬见小百科】PCB多层板各层含义与设计原则
  16. 关于HTML的table表格换行一事
  17. <hr> 标签:定义水平线
  18. Springcloud+Seata+nacos 分布式事务项目搭建 AT模式
  19. UPC --- 2018年第三阶段个人训练赛第五场 --- A题 Make a Rectangle(6595)
  20. linux下简单配置zlib软件

热门文章

  1. 【WP7】页面过渡效果
  2. Linux桌面新彩虹-Fedora 14 炫酷应用新体验
  3. [导入]MsAjax Lib- Array.insert 函数
  4. 比特币现金BCH今日事件
  5. Elasticsearch总体介绍
  6. linux配置java环境变量 转过几个,这个最详细和靠谱
  7. (资源)OpenStack IRC资源
  8. ipmsg 绑定tcp错误
  9. 知乎社区核心业务 Golang 化实践
  10. 如何从ERP将Material的Batch信息下载到CRM并存储在settype COMM_PR_BATCH里