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. 正则表达式Pattern ,Matcher

    正则表达式:符合一定规则的表达式 作用:用于专门操作字符串 特点:用于一些特定的符号来表示一些代码的操作,这样就简化代码的书写 学习正则表达式就是要学习一些特殊符号的使用 好处:简化对字符串复杂的操作 ...

  2. Loadrunner 关于参数赋值取值的操作

    1.参数的赋值和取值 lr_save_string("hello world","param"); lr_eval_string("{param}&q ...

  3. Windows下创建.gitgnore文件

    相信使用过git的朋友可能遇到过,直接在windows下创建.gitgnore文件失败.类似截图那样 上网查了一下,有两种方法. 方法1: 此方法较为简单,前提是安装了git bash. 用git b ...

  4. MongoDB查询条件常用设置

    原文地址:http://blog.csdn.net/mcpang/article/details/8731065 Java操作mongodb进行查询,常用筛选条件的设置如下: 条件列表: BasicD ...

  5. leetCode(37):Implement Queue using Stacks

    Implement the following operations of a queue using stacks. push(x) -- Push element x to the back of ...

  6. Cassandra安装和初次使用

    Cassandra安装和初次使用 卡珊德拉(Cassandra)又译卡桑德拉.卡珊卓,为希腊.罗马神话中特洛伊(Troy)的公主,阿波罗(Apollo)的祭司.因神蛇以舌为她洗耳或阿波罗的赐予而有预言 ...

  7. idea各种设置和学习

    1. 去掉方法中的参数名提示 idea在Review时候的编码设置 idea在review代码的时候会会出现中文乱码,文件是GBK的,但是idea的字符集和项目的字符集都是UTF-8, 这时可以通过把 ...

  8. Lumen开发:如何向 IoC 容器中添加自己定义的类

    版权声明:本文为博主原创文章,未经博主允许不得转载. 先在起始文件bootstrap/app.php加上$app->register(App\Providers\User\UserService ...

  9. Domino Angular 前端UI开发

    因为如今前端的要求越来越专业化,不少企业已经有前端的专业职位了.当然我们dominio软件企业.有些也在特意招一些前端的project师. 比方如今流程的多平台(之前我的有教程).就必需要有专业的UI ...

  10. POJ 1113 Wall【凸包周长】

    题目: http://poj.org/problem?id=1113 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22013#probl ...