1、网络编程的三要素:(1)IP地址(2)端口号(3)协议
2、IP地址 : 网络中计算机唯一标识。
(1)IP地址在计算机中存储的时候是由二进制的形式进行存储的:IP:192.168.7.42   十进制换算成二进制:   11000000.10101000.00000111.00101010实际上存储的是:  11000000101010000000011100101010为了方便IP地址的标识,就把IP地址上的每一个字节上的数据转换成10进制,然后字节与字节之间用 . 分割标识。这样的表示法叫做 : 点分十进制表示法(2)IP地址的组成:  网络号段 + 主机号段(3)IP地址的分类:A:第一个号段定义为网络号段 + 后面三个号段都是为主机号段  (主机号段:将来可以连接多少台电脑)可以有多少台主机相连:    (3个号段): 256*256*255       11111111*11111111*11111110 = 256*256*255B:前两个号段为网络号段 + 后两个号段为主机号段      256*255C:前三个号段都为网路号段 + 最后一个号段为主机号段   255 局域网D:224.0.0.1---239.255.255.254E:240.0.0.1---247.255.255.254(4)特殊的IP地址:1、loaclhost = 本机 = 127.0.0.1127.0.0.1 : 回环地址,可以用于测试本机的网络是否有问题, 检测方法: ping 127.0.0.12、广播地址:x.x.x.2553、网络地址:x.x.x.0

3、为了方便我们对IP地址的获取和操作,java提供了一个类InetAddress 供我们使用:

InetAddress的方法:

    (1)public static InetAddress getByName(String host)   确定主机名称的IP地址。(2)public String getHostName()  获取此IP地址的主机名。(3)public String getHostAddress()   返回文本显示中的IP地址字符串。(4)getAddress()   返回此InetAddress对象的原始IP地址。
public class InetAddressDemo {public static void main(String[] args) {//public static InetAddress getByName(String host)   确定主机名称的IP地址。InetAddress name = null;try {name = InetAddress.getByName("192.168.7.18");} catch (UnknownHostException e) {e.printStackTrace();}System.out.println(name);         //  /192.168.7.18//public String getHostName()  获取此IP地址的主机名。String hostName = name.getHostName();System.out.println(hostName);     // XiaoWang//public String getHostAddress()   返回文本显示中的IP地址字符串。String hostAddress = name.getHostAddress();System.out.println(hostAddress);      // 192.168.7.18  (这是一个字符串)}
}

4、TCP

建立连接,形成传输数据的通道;在连接中进行大数据量传输;通过三次握手完成连接,是可靠协议;必须建立连接,效率会稍低

/***                       -----------TCP客户端----------------**       TCP协议客户端代码实现:*           1、创建客户端的Socket对象     -- 这一步如果成功创建对象,就说明连接已经建立成功*             构造方法: (1)Socket(InetAddress address, int port)   创建流套接字并将其连接到指定IP地址的指定端口号。*                     (2)Socket(String host, int port)   创建流套接字并将其连接到指定主机上的指定端口号。**           2、获取输出流对象,向服务器写数据*            OutputStream getOutputStream()  返回此套接字的输出流。**           3、释放资源,关闭Socket服务***         注意事项:*            要先启动服务器端,再启动客户端,否则会报连接被拒绝异常*/public class ClientDemo {public static void main(String[] args) {//1、创建发送端的Socket对象//(1)Socket(InetAddress address, int port)   创建流套接字并将其连接到指定IP地址的指定端口号。
//        Socket s = new Socket(InetAddress.getByName("192.168.7.42"), 12345);//(2)Socket(String host, int port)   创建流套接字并将其连接到指定主机上的指定端口号。Socket s = null;try {s = new Socket("192.168.7.18", 12345);//2、获取输出流对象,向服务器写数据//OutputStream getOutputStream()  返回此套接字的输出流。OutputStream os = s.getOutputStream();os.write("你好,新世界".getBytes());} catch (IOException e) {e.printStackTrace();}//3、释放资源,关闭Socket服务if(s != null) {try {s.close();} catch (IOException e) {e.printStackTrace();}}}
}/***                      -----------TCP服务器端----------------**       TCP协议编写服务器端代码:*           1、创建服务器端Socket对象(ServerSocket)*              构造方法:  ServerSocket(int port)   创建绑定到指定端口的服务器套接字。**           2、服务器端没有直接对流的操作,所以调用accept()方法,监听客户端的连接,返回一个对应客户端连接的Socket对象*              Socket accept()   侦听要连接到此套接字并接受它。**           3、获取通道中的输入流对象,读取客户端发送的数据*              InputStream getInputStream()   返回此套接字的输入流。*              InetAddress getInetAddress()   返回套接字所连接的地址(客户端地址)。**           4、释放资源,关闭Socket服务**/public class ServerDemo {public static void main(String[] args) {//1、创建服务器端Socket对象(ServerSocket)//ServerSocket(int port)   创建绑定到指定端口的服务器套接字。ServerSocket ss = null;try {ss = new ServerSocket(12345);//2、调用accept()方法,监听客户端的连接,返回一个对应客户端连接的Socket对象//Socket accept()   侦听要连接到此套接字并接受它。Socket s = ss.accept();//3、获取通道中的输入流对象,读取客户端发送的数据,并显示在控制台上//InputStream getInputStream()   返回此套接字的输入流。InputStream is = s.getInputStream();//获取客户端的ip//getInetAddress()   返回套接字所连接的地址(客户端地址)。String ip = s.getInetAddress().getHostAddress();String hostName = s.getInetAddress().getHostName();byte[] bytes = new byte[1024];int length = is.read(bytes);String s1 = new String(bytes, 0, length);System.out.println(ip + "名为: " + hostName + "发送的数据为: " + s1);} catch (IOException e) {e.printStackTrace();}}
}

5、UDP

将数据源和目的封装成数据包中,不需要建立连接;每个数据报包的大小在限制在64k;因无连接,是不可靠协议;不需要建立连接,速度快

/***                            -----------UDP发送端----------------**      UDP协议发送数据 :*          1、创建发送端的Socket对象**            DatagramSocket类构造方法1:*              DatagramSocket()    构造数据报套接字并将其绑定到本地主机上的任何可用端口。**          2、创建数据,并把数据打包**            DatagramPacket类构造方法1:*              DatagramPacket(byte[] buf, int length, InetAddress address, int port) 构造用于发送指定长度的数据包到指定主机上指定的端口号。**          3、调用Socket对象的发送方法将数据发送出去*              发送方法 : void send(DatagramPacket p)  从此套接字发送数据报包。**          4、释放资源,关闭Socket**/public class SendDemo {public static void main(String[] args) throws Exception{//1、创建发送端的Socket对象//DatagramSocket()  构造数据报套接字并将其绑定到本地主机上的任何可用端口。DatagramSocket ds = new DatagramSocket();//2、创建数据,并把数据打包//(1)定义一个字节数组byte[] bytes = "你好,大数据".getBytes();//(2)获取数组的长度int length = bytes.length;//(3)要发送的IP地址InetAddress address = InetAddress.getByName("192.168.7.18");//(4)自定义设置端口号     有效端口:0~65535,其中0~1024系统使用或保留端口int port = 10086;//DatagramPacket(byte[] buf, int length, InetAddress address, int port)  构造用于发送指定长度的数据包到指定主机上指定的端口号。DatagramPacket dp = new DatagramPacket(bytes, length, address, port);//3、调用Socket对象的发送方法将数据发送出去//void send(DatagramPacket p)  从此套接字发送数据报包。ds.send(dp);//4、释放资源,关闭Socketds.close();}
}/***                             -----------UDP接收端----------------**      UDP协议接收数据:*          1、创建接收端的Socket对象**            DatagramSocket类构造方法2:*              DatagramSocket(int port)   构造数据报套接字并将其绑定到本地主机上的指定端口。**          2、创建一个数据包(接收容器)**            DatagramPacket类构造方法2:*              DatagramPacket(byte[] buf, int length)   构造一个DatagramPacket用于接收指定长度的数据包。**          3、调用Socket对象的接收方法接收数据*            接收方法 : void receive(DatagramPacket p)   从此套接字接收数据报包。**          4、解析数据包,得到数据并显示在控制台上*            public byte[] getData()   获取到数据包里的数据。*            public int getLength()   返回要发送的数据的长度或接收到的数据的长度。**          5、释放资源,关闭Socket***          注意事项:*             接收端程序在绑定同一个端口的时候不能同时运行多个,即不能同时启动多个接收端。*/public class ReceiveDemo {public static void main(String[] args) throws Exception {//1、创建发送端的Socket对象//DatagramSocket(int port)    构造数据报套接字并将其绑定到本地主机上的指定端口。DatagramSocket ds = new DatagramSocket(10086);       // 因为发送端定义了端口号10086//2、创建一个数据包(接收容器)//(1)定义一个字节数组byte[] bytes = new byte[1024];//(2)获取数组的长度int length = bytes.length;//DatagramPacket(byte[] buf, int length)   构造一个DatagramPacket用于接收指定长度的数据包。DatagramPacket dp = new DatagramPacket(bytes, length);//3、调用Socket对象的接收方法接收数据//void receive(DatagramPacket p)   从此套接字接收数据报包。ds.receive(dp);          //调用receive程序阻塞,直到接收到发送端发送的数据InetAddress address = dp.getAddress();     // 获取InetAddress对象String ip = address.getHostAddress();      // 通过InetAddress对象获取ip地址字符串//4、解析数据包,得到数据并显示在控制台上//public byte[] getData()   获取到数据包里的数据。byte[] data = dp.getData();//public int getLength()   返回要发送的数据的长度或接收到的数据的长度。int length1 = dp.getLength();String s = new String(data, 0, length1);System.out.println(ip + "发送的数据为: " + s);//5、释放资源,关闭Socketds.close();}
}

大数据 -- java基础16 网络编程 TCP UDP相关推荐

  1. 黑马程序员 java基础之网络编程TCP

    TCP网络传输. 客户端和服务端 分别对应着两个对象. Scoket(客户端)和ServerSocket(服务端). Socket(String  address, int port) 创建一个流套接 ...

  2. 【全集】大数据Java基础

    课程介绍 本课程是由猎豹移动大数据架构师,根据Java在公司大数据开发中的实际应用,精心设计和打磨的大数据必备Java课程.通过本课程的学习大数据新手能够少走弯路,以较短的时间系统掌握大数据开发必备语 ...

  3. JAVA基础11 网络编程

    JAVA基础 11.网络编程 1.什么是网络?网络模型?网络四要素? 1.网络 在计算机领域中网络是信息传输,接收,共享的虚拟平台,通过它把各个点,面,体的联系到一起,从而实现这些资源的共享. 资源的 ...

  4. java socket ip_JAVA 网络编程 TCP/IP、Socket 和协议设计

    [JAVA 网络编程 TCP/IP.Socket 和协议设计] TCP/IP 协议简介 IP 首先我们看 IP(Internet Protocol)协议.IP 协议提供了主机和主机间的通信. 为了完成 ...

  5. java全双工_java网络编程TCP聊天全双工

    我正在实现服务器和客户端之间的简单TCP聊天.我使用多线程,因此服务器和客户端可以同时发送和接收数据(全双工).该程序可以工作,但如果服务器有一个控制台既可以输入发送消息,也可以显示接收消息(对于客户 ...

  6. 网络编程(Tcp/Udp实现聊天、文件上传)

    网络编程 1.1 概述 计算机网络是指将位置不同的多台[计算机 通过通信线路连接起来,实现资源共享和信息传递的计算机系统 1.2 网络通信的要素 ip和端口 网络通信协议(tcp/udp) 1.3 I ...

  7. Java基础23 网络编程 socket套接字流 TCP传输总结

    一.网络编程的概念 1.计算机网络:将不同地区的计算机,使用网络来进行连接 实现不同地区的数据的交互与共享(互联时代) 2. 网络编程的三要素:IP地址 端口号 协议 3. ip地址:是在网络连接中 ...

  8. Java基础:网络编程

    1. 网络编程概述 自从互联网诞生以来,现在基本上所有的程序都是网络程序,很少有单机版的程序了. 计算机网络就是把各个计算机连接到一起,让网络中的计算机可以互相通信.网络编程就是如何在程序中实现两台计 ...

  9. 【Java】网络编程——TCP/UDP网络对讲机

    目录 前言 OSI概述 传输层 端口 Socket InetAddress类 UDP协议间的通信 UDP协议相关类 UDP 发送端 UDP 接收端 + 发送端 UDP 聊天 + 全局广播 UDP发送大 ...

最新文章

  1. scala中类的继承关系
  2. apatedns unhandled exception
  3. android内部通信handler
  4. 什么是计算机的网络体系结构,什么是网络体系结构 网络体系结构介绍【详解】...
  5. windows消息机制深入详解-1
  6. python 动态规划_DP动态规划(Python实现)
  7. go read text file into string array
  8. cad通过钢筋大样生成钢筋明细表插件_各位做室内外设计的朋友,告别CAD单线画图,用天正建筑更方便...
  9. linux 标准vruntime,linux – CFS中vruntime的概念是什么
  10. 公交查询www.chajt.com
  11. 分布式存储系统设计的关键问题
  12. Ubuntu16.04 安装显卡驱动 cuda,cudnn
  13. 计算机学术论文shortessay,期末论文essay
  14. ppt讲解中的过渡_PPT「过渡页」怎么设计才好看?
  15. java double精度丢失 0.1+0.2不等于0.3
  16. 微信跳转到关注公众号万能链接
  17. python画柱形图显示数值_python画柱状图--不同颜色并显示数值的方法
  18. 计算机是xp系统吗,任何电脑都能装XP系统吗?
  19. 平衡二叉树的左旋右旋详解 看不懂你打我
  20. 2023年科普新书大盘点:重磅新书,值得期待!

热门文章

  1. Java SE 第八十八,八十九,九十讲 递归深度剖析 IO流深入详解,递归作业详解
  2. HTML 头部 head 标签
  3. WPARAM 与 LPARAM
  4. 咱们老百姓,今儿个真高兴
  5. 基于cnn的图像二分类算法(一)
  6. NSA泄密事件之SMB系列远程命令执行漏洞及Doublepulsar后门全球数据分析
  7. weui实例:城市便民自行车查询
  8. 迪杰斯特拉求最短路(dijkstra)
  9. ATFX:中国10月CPI增速2.1,USDCNH稳定在7.2附近
  10. 一些操作系统安全设置