java网络通信概述

一、网络通信步骤:

  主机1   主机2

QQ-------QQ

FEIQ-----FEIQ

  1.找到对方IP。

  2.找到对方端口号。数据要发送到对方的应用程序上。为了标识这些应用程序,所以给这些网络应用程序都用数字进行标识。   为了方便称呼这个数字,叫做端口。注意此处是逻辑端口。

  3.定义通信规则。这个通讯规则称为协议。 国际组织定义了通用的协议TCP/IP。

二、备注说明:

  为了安全起见,一些单位,特别是保密工作,用的协议和大家用的协议都不一样,那么别人想入侵他根本入侵不了,除非破解协议。

  127.0.0.1本地回环地址。也就是说如果本机没有配置任何地址时候默认地址。 用途之一:测试网卡。ping 127.0.0.1

  192端,保留地址段。用于局域网。

三、端口范围

  端口 0--65535

  一般来说:0--1024 系统程序保留,一般开发程序不用,防止冲突。

   常见端口:web-80;tomcat-8080;mysql:3306。

四、通讯规则:UDP、TCP

五、网络模型:

  不同功能层次比较细致的划分。

  OSI参考模型:物理层、数据链路层、网络层、会话层、表示层、应用层。

  数据封包(发送者)————>数据拆包(接收者)应用层看数据属于哪个端口,然后数据解析。

  TCP/IP参考模型:应用层(http)、传输层(TCP/UDP)、网际层(IP)、主机至网络层。

  java基础基本都是在传输层和网际层操作的,暂且不考虑应用层。 IP:网络中的设备标识--不易记忆,可用主机名--本地回环地址:127.0.0.1 主机名:localhost

六、java方法获取本机和网络上主机的IP地址

1.首先导入net包
2.生成IP地址对象
3.解析IP地址对象,分为地址和主机名。一般网络上主机名不一定能解析出来。

 import java.net.*;

 class  IPDemo
{
public static void main(String[] args) throws Exception //异常必须处理或者抛出
{
InetAddress i=InetAddress.getLocalHost(); //获取本机IP地址对象
System.out.println(i.toString());//打印本机IP地址对象,转换成字符创打印 System.out.println("Address:"+i.getHostAddress());//获取本机IP地址
System.out.println("name:"+i.getHostName());//获取本机IP地址名称 //获取任意一台主机IP地址对象,如果这个地址和他对应的主机名没有在网络上
//我这个主机照这个地址没找到,没解析成功。IP地址对象的名称仍然是IP地址。
InetAddress ia=InetAddress.getByName("192.168.1.254");
//InetAddress ia=InetAddress.getByName("cxxy.seu.edu.cn");
//InetAddress ia=InetAddress.getByName("www.baidu.com");//只适合单一地址
//若返回的IP地址对象不唯一。那么往里面传主机名,返回的是IP地址对象数组,方法:static InetAddress[] getAllByName(String host)
System.out.println("Address:"+ia.getHostAddress());//获取本机IP地址
System.out.println("name:"+ia.getHostName());//获取本机IP地址名称 }

class IPDemo

七、用java获取本机IP对象的四种方法

  本机IP对象对于在网络通信中十分重要。

InetAddress addr=InetAddress.getLocalHost();
InetAddress addr = InetAddress.getByName(null);
InetAddress.getByName("localhost");
InetAddress.getByName("127.0.0.1");
补充一种查看IP地址对象方法:
运行-->cmd-->ipconfig;里面有地址类型,子网掩码,默认网关,IP地址等信息。
如果是查看MAC的IP地址,可以按楼上的方法,cmd中输入“ipconfig/all”命令,Physical Address 物理地址,就是本机IP啦

网络编程概述和IP地址的获取方法的更多相关文章

  1. c/c++ 网络编程 UDP 改变IP地址

    网络编程 UDP 改变IP地址 在程序里动态改变主机的IP地址 1,改变ipv4的地址 #include <stdio.h> #include <string.h> #incl ...

  2. 嵌入式linux的网络编程(1)--TCP/IP协议概述

    嵌入式linux的网络编程(1)--TCP/IP协议概述 1.OSI参考模型及TCP/IP参考模型 通信协议用于协调不同网络设备之间的信息交换,它们建立了设备之间互相识别的信息机制.大家一定都听说过著 ...

  3. 【网络编程一】主机字节序与网络字节序以及ip地址转换函数

    在计算机设计之初,对内存中数据的处理也有不同的方式,(低位数据存储在低位地址处或者高位数据存储在低位地址处),然而,在通信的过程中(ISO/OSI模型和TCP/IP四层模型中),数据被一步步封装(然后 ...

  4. Android网络编程概述

    Android网络编程概述 首先,应该了解的几个问题: 1)Android平台网络相关API接口 a) java.net.*(标准Java接口) java.net.*提供与联网有关的类,包括流.数据包 ...

  5. 【liunx】使用xshell连接虚拟机上的CentOS 7,使用xhell连接本地虚拟机上的Ubuntu, 获取本地虚拟机中CentOS 7的IP地址,获取本地虚拟机中Ubuntu 的IP地址,Ubuntu开启22端口

    注意,如果想用xshell去连接本地虚拟机中的linux系统,需要本地虚拟机中的系统是启动的才能连接!!!!! ============================================ ...

  6. linux&nbsp;ip地址自动获取,ip地址…

    linux ip地址自动获取,ip地址手动设置(图文解释) 2011-04-19 16:19:31| 分类: 服务器(appache/n | 标签: |字号大中小 订阅 linux ip地址自动获取( ...

  7. 【转载】[基础知识]【网络编程】TCP/IP

    转自http://mc.dfrobot.com.cn/forum.php?mod=viewthread&tid=27043 [基础知识][网络编程]TCP/IP iooops  胖友们楼主我又 ...

  8. 【网络编程】TCP/IP、UDP、网络概…

    计算机刚刚发明出来的时候,两台计算机之间是无法通信的,为了使计算机之间能够进行数据的交流,制定了OSI(Open SystemInterconnection)开放系统互联模型,而TCP/IP(我们所使 ...

  9. CentOS 网络设置修改 指定IP地址 DNS 网关(转)

    CentOS 网络设置修改 指定IP地址 DNS 网关(实测 笔记)   环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G) 系统版本:Centos-6.5-x86_64 ...

随机推荐

  1. 超高逼格Log日志打印

    代码地址如下:http://www.demodashi.com/demo/12646.html 前言 Log日志的打印一直是一个比较头疼的事,怎样才能让自己的log显示更多信息,怎样才能让自己的log ...

  2. 关于汉诺塔,C++代码,代码效果演算

     1.故事介绍 汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上依照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘 ...

  3. beyond compare 软件学习

    beyond compare 软件可以实现基本的文件对比,这点和 NotePad++ 的功能一样.但是在实现文件夹与文件夹之间的对比的话,就要使用 beyond compare 进行对比,效率是成倍提 ...

  4. BFS和DFS的java实现

    <pre name="code" class="java"> import java.util.HashMap; import java.util. ...

  5. Spring Framework简单介绍

    Spring Framework        学习java编程不知不觉已经三年时间了,開始的时候,总是喜欢看着视频,然后按部就班的敲打着键盘,每当系统正常执行后.心里乐开了花.最開始的时候,所有的代 ...

  6. CSS基础2——选择器

    前面说过样式规则.也知道了样式规则语法形式为:选择器+声明块 如:div{ color:black:padding:10px; }   div即表示选择器(此处是元素选择器),花括号里的内容就是声明块 ...

  7. iOS中文输入法多次触发的问题及解决方案

    最近要在移动端实现一个文本框实时搜索的功能,即在文本框里每输入一个字,就向服务器请求一次搜索结果.暂且不考虑性能优化问题,第一时间想到的是用keyup实现: $('input').on('keyup' ...

  8. VS2012删除选项卡菜单中的"关闭所有文档"

    delete the "close all documents" item of tab menu in vs2012 Tools -> Customize -> Co ...

  9. CSS div固定顶端

    position: fixed;原来只需要这么一个设置就可以!

  10. PHP中常见的几种运行代码的方式

    常见的运行程序的方法有 shell_exec ``(反引号) eval system exec passthru 下面分别介绍他们的用法: 名称 解释 返回值 注意 shell_exec 通过 she ...