网络编程
1.网络编程概述
(1).C/S结构:指客户端与服务端结构,常见程序QQ;
(2).B/S结构:指浏览器和服务器的结构;
2.网络编程的三要素:
*IP地址
*端口号
*通信协议(UDP/TCP)

*IP地址类(InetAddress类)
一个IP地址就对应一个InetAddress类的对象。
InetAddress类使用静态方法
(1).获得本地主机的IP地址对象
InetAddress ip = InetAddress.getLocalHost();
ip.getHostName();获取主机名
ip.getHostAddress();获得ip地址字符串
根据IP地址字符串或主机名获得IP地址对象
InetAddress ip02 = InetAddress.getByName("ip地址");
UDP协议(用户数据包协议)
1.UDP协议的特点:
*面向无连接协议
* 只管发送,不确认对方是否收到。
* 基于数据包(报)进行数据传输。
* 发送数据大小限制在64k以内。
* 因为面向无连接,速度快但不可靠
2.UDP使用场景
* 即时通讯(QQ,微信,陌陌.....)
* 在线视频
* 语言通话
3.用法:
*发送端
(1).创建数据包对象
DatagramPacket dp = new DatagramPacket(要发送的内容,长度,接收端的ip地址,端口号 );
(2).创建发送端的发送对象
DatagramSocket ds=new DatagramSocket();
ds.send(dp);发送数据包
ds.close();关闭资源
*接收端
(1).创建接收端的Socket对象
DatagramSocket ds=new DatagamSocket(端口号);
// 创建字节数组
byte[] buf = new byte[1024];
// 创建数据包对象
DatagramPacket dp = new DatagramPacket(buf,buf.length);
// 接收数据包
ds.receive(dp);

// 获得实际接收内容的长度
int len = dp.getLength();
// 输出内容
System.out.println(new String(buf,0,len));
// 获得发送端的IP和端口号
String sendIP = dp.getAddress().getHostAddress();
int sendPort = dp.getPort();
System.out.println("sendIP = " + sendIP);
System.out.println("sendPort = " + sendPort);
TCP协议(传输控制协议)
1.TCP协议的特点
* 面向连接的协议。
* 通过三次握手建立连接,形成数据传输通道。
* 通过四次挥手断开连接
* 基于IO流进行数据传输
* 传输数据大小没有限制
* 因为面向连接,速度慢但可靠
2.TCP协议使用场景
* 文件上传和下载
* 邮件发送和接收
* 远程登录
TCP协议通讯相关的两个类
* Socket
* 客户端Socket
* 一个该类的对象就代表一个客户端程序
* ServerSocket
* 服务器端Socket
* 一个该类的对象就代表一个服务器程序

Socket类构造方法
* Socket(String host, int port)
* 根据服务器IP地址和端口号创建客户端Socket对象
* 一旦执行该方法就会立即连接服务器,如果连接失败直接抛异常。
* host:服务器端IP地址
* port:服务器端的端口号

Socket类常用方法
* OutputStream getOutputStream(); 获得字节输出流对象
* InputStream getInputStream(); 获得字节输入流对象
用法:
客户端
// 根据服务器IP地址和端口号创建客户端Socket对象
Socket socket = new Socket("192.168.106.45", 8888);
// 要发送的内容
String content = "约吗,TCP服务器端";
// 获得字节输出流对象
OutputStream out = socket.getOutputStream();
// 往服务器端输出数据
out.write(content.getBytes());

// 获得字节输入流对象
InputStream in = socket.getInputStream();
// 创建字节数组:用来存储服务器返回的数据
byte[] buf = new byte[1024];
// 读取服务器端返回的数据
int len = in.read(buf);
System.out.println("len = " + len);
System.out.println(new String(buf,0,len));
// 关闭Socket断开连接
socket.close();

服务端
ServerSocket类构造方法
* ServerSocket(int port)
* 根据指定的端口号创建服务器Socket对象
* 相当于开启一个服务器

ServerSocket类常用方法
* Socket accept();
* 等待客户端连接并获得与客户端关联的Socket
* 是一个阻塞方法,如果没有客户端连接则当前线程的代码无法继续运行。
用法;// 根据指定的端口号创建服务器Socket对象
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("开启服务器......");
// 等待客户端连接并获得与客户端关联的Socket
Socket socket = serverSocket.accept();
// 获得字节输入流对象
InputStream in = socket.getInputStream();
// 创建字节数组:用来存储客户端发送过来的数据
byte[] buf = new byte[1024];
// 读取客户端发送的数据
int len = in.read(buf);
System.out.println("len = " + len);
System.out.println("接收到的数据 = " + new String(buf,0,len));
// 获得字节输出流对象
OutputStream out = socket.getOutputStream();
// 往客户端输出数据
out.write("不约而同".getBytes());
// 关闭服务器:在实际开发中服务器一般是不关闭的。
serverSocket.close();

网络编程java的更多相关文章

  1. 网络编程-Java中的Internet查询

    前提 在深入理解URL.URI等概念,或者学些Socket相关的知识之,有必要系统理解一下Internet相关的一些基础知识. Internet地址 连接到Internet(因特网)的设备称为节点(n ...

  2. C++网络编程 Java网络编程

    C++ MFC C++ STL C++ 模板 C++ DLL C++ OpenGL C++ OSG C++ GIS (GRASS QGIS POSTGRE GDAL/OGR) ____________ ...

  3. Java - 网络编程完全总结

    本文主要是自己在网络编程方面的学习总结,先主要介绍计算机网络方面的相关内容,包括计算机网络基础,OSI参考模型,TCP/IP协议簇,常见的网络协议等等,在此基础上,介绍Java中的网络编程. 一.概述 ...

  4. 【转载】Java 网络编程

      本文主要是自己在网络编程方面的学习总结,先主要介绍计算机网络方面的相关内容,包括计算机网络基础,OSI参考模型,TCP/IP协议簇,常见的网络协议等等,在此基础上,介绍Java中的网络编程. 一. ...

  5. Java学习:网络编程总结

    Java网络编程总结 一.概述 计算机网络是通过传输介质.通信设施和网络通信协议,把分散在不同地点的计算机设备互连起来,实现资源共享和数据传输的系统.网络编程就就是编写程序使联网的两个(或多个)设备( ...

  6. day05 Java网络编程socket 与多线程

    java网络编程 java.net.Socket Socket(套接字)封装了TCP协议的通讯细节,是的我们使用它可以与服务端建立网络链接,并通过 它获取两个流(一个输入一个输出),然后使用这两个流的 ...

  7. 自定义异常、Java网络编程

    day04 throw关键字 throw用来对外主动抛出一个异常,通常下面两种情况我们主动对外抛出异常: 1:当程序遇到一个满足语法,但是不满足业务要求时,可以抛出一个异常告知调用者. 2:程序执行遇 ...

  8. javaSE学习笔记(16)---网络编程

    javaSE学习笔记(16)---网络编程 基本概念 如今,计算机已经成为人们学习.工作.生活必不可少的工具.我们利用计算机可以和亲朋好友网上聊天,也可以玩网游.发邮件等等,这些功能实现都离不开计算机 ...

  9. Java - 网络编程

    Java的网络编程学习,关于计算机基础的学习参考:计算机网络基础学习 - sqh.     参考:  

随机推荐

  1. 爬取凤凰网站财经类的新闻,函数时编程,可全部实现,由于内容量大,需要时间太长,服务器会禁止,为了防止,可以将time.sleep()设置的时间长点

    import requests from selenium import webdriver import time def grasp(urlT): driver = webdriver.Chrom ...

  2. android.intent.category.BROWSABLE

    参考: http://blog.csdn.net/annkie/article/details/8349626 http://xiechengfa.iteye.com/blog/1004991 BRO ...

  3. AutoCompleteTextView自动完成文本框

    AutoCompleteTextView是从EditText派生出来的,比普通编辑框多了一个功能,当用户输入一定字符后,自动完成文本框会显示一个下拉单,供用户选择,当选中一个后,被选中的内容会显示在文 ...

  4. Web之-----弹出确认框控件应用

    引用文件!-------- <link rel="stylesheet" type="text/css" href="@Url.FrontUrl ...

  5. thinkphp6.0 composer 安装 web-token/jwt-framework 常见出错原因分析及解决方法

    composer require web-token/jwt-framework 安装JWT出现错误提示 - web-token/jwt-framework v2.0.1 requires ext-g ...

  6. Vue路由(vue-router)详细讲解指南

    中文文档:https://router.vuejs.org/zh/ Vue Router 是 Vue.js 官方的路由管理器.它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌.路由实际 ...

  7. C++ std::thread概念介绍

    C++ 11新标准中,正式的为该语言引入了多线程概念.新标准提供了一个线程库thread,通过创建一个thread对象来管理C++程序中的多线程. 本文简单聊一下C++多线程相关的一些概念及threa ...

  8. SqlServer 统计1-12月份 每个月的数据(临时表)

    想做一个年度图表 效果如下,通过sqlserver来统计今年1-12月份每个月的数据,效果如下 sql语句网上找了很多都没有找到满意的 找到的其中一种写法是这样子的 这种写法对于前端来说很方便 不用进 ...

  9. 记一次处理mysql数据库无故锁表的经历

    某日,生产环境上的用户表突然无故锁表,原以为只是偶发的bug.所以第一时间想到的解决方案简单粗暴:重启数据库(service mysqld restart).问题得以解决. 10min后,该表再次锁表 ...

  10. linux中将video转换成gif

    我使用的机器是Linux mint 17,因为习惯了在linux中开发而有时候在写小demo的时候要带一些演示,虽然可以使用录屏也可以但是视屏演示这些小demo也不是特别的方便.之前一直在linux中 ...