java进阶之---------网络编程
java进阶之网络编程,学这个之前我们在这里简单讨论一下什么是计算机网络:
计算机网络是将不同的地理位置但是具有独立功能的计算机及其外部设备,通过通信线路连接起来,实现资源共享
这里我们就将实现这个功能,如何实现呢?继续往下看。
网络编程
一. 概述
1.什么是计算机网络
计算机网络是指将地理位置不同的具有独立功能的多台计算机及其
外部设备,通过通信线路连接起来,在网络操作系统,网络管理软
件及网络通信协议的管理和协调下,实现资源共享和信息传递的计
算机系统。
2.为什么需要网络编程
简单的来说就是通过通信实现数据的交换
3.这么实现网络通信
- 我们需要获取到双方的地址,这里所谓的地址就是IP+端口号,这里准确定位网络上的一台或者多台主机
- 网络通信协议
IP
这里简单的讨论一下什么是IP
- 定位唯一一台网络上的计算机
- 127.0.0.1 代表的是本机地址,localhost
- 分类:
IPV4/IPV6IPV4 127.0.0.1 4个字节组成 0~255 42亿IPV6 128位 8个无符号整数公网(互联网)-私网(局域网)192.168.xxx.xxx,专门给组织内部使用ABCD类地址
如何通过代码获取IP呢?
这里来看获取本机IP和查询网站地址的,用代码进行讲解
1. //查询本机地址InetAddress ip1 = InetAddress.getByName("127.0.0.1");
InetAddress ip2 = InetAddress.getByName("loaclhost");
InetAddress ip3 = InetAddress.getLocalHost();
2. //查询网站地址
InetAddress ip4 = InetAddress.getByName("www.baiu.com");3. //四个get方法
ip4.getHostAddress();
端口
上面说了获取计算机的地址就是获取其对应的IP+端口号,那么端口号到底是什么呢??
这里简单的来介绍一下什么是端口号:
端口号就是表示计算机上面的一个程序的进程
1、不同的进程有不同的端口号,用来区分软件2、0~655353、TCP、UDP 65535*2 单个协议下,端口号不能冲突4、分类公有端口 0~1023HTTP 80HTTPS 443FTP 21Telent 23程序注册端口 1024~491515Tomcat 8080MySQL 3306Oracle 1521动态、私有 49152~65535
代码讲解
#查看所有端口
netstat -ano
#查看具体端口
netstat -ano|findstr "5900"
#查看具体端口的进程
tasklist|finstr "8696"InetSocketAddress port1 = new InetSocketAddress("127.0.0.1",8080);
InetSocketAddress port2 = new InetSocketAddress("localhost");
port1.getAddress();
port1.getHostName();
port1.getPort();
通信协议
我们所谓的协议就是约定的意思,这里主要看两个协议TCP和UDP
- TCP协议:用户传输的协议
TCP协议发送数据:1、创建发送端的Socket对象这一步一旦成功了,说明连接建立成功2、获取输出流对象,写数据3、释放资源TCP编程先启动服务器端,否则报错ConnectException: Connection refused: connect
- UDP:用户数据报协议
UDP协议发送数据:1、创建发送端的Socket对象2、创建数据,将数据打包3、调用Socket对象中的一个方法,将数据包发出去4、释放资源,关闭Socket对象
TCP通信
这里是客户端
我们这里用代码来讲解一下
- 创建socket,连接服务器
Socket socket = new Socket(InetAddress.getByName("127.0.0.1"),9999);
- 获取输出流对象
OutputStream os = socket.getOutputStream();
- 创建文件读取流fis
FileInputStream fis = new FileInputStream(new File("naem.file"))
当然我们这里也可以变成手动的输入数据这里也给出代码:
while (true){sc = new Scanner(System.in);String next = sc.next();if("886".equals(nest)){break;}os.write(next.getBytes());
}//释放资源
s.close();
- fis读取buffer,os写出文件(管道流)
byte[] buffer = new byte[1024];
int len;
while ((len = fis.read(buffer)) != -1)
{os.write(buffer,0,len);
}
- 通知服务器,传输完毕
socket.shutdownOutput();
- 创建js接收服务器传输内容,确认服务器接收完毕,关闭资源。
InputStream is = socket.getInputStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer2 = new byte[1024];
int len2;
while ((len2 = is.read(buffer2)) != -1)
{baos.write(buffer2,0,len2);
}
System.out.println(baos.toString());
baos.close();
is.close();
fis.close();
os.close();
socket.close();
这里是服务器端
- 创建ServerSocket服务端口
ServerSocket serversocket = new ServerSocket(9999);
- 创建Socket,等待(监听)用户连接Accept
Socket socket = serverSocket.accept();
- 创建输入流,获取客户端的文件
InputStream is = socket.getInputStream;
- 创建文件输出流
FileOutputStream fos = new FileOutputStream(new File("Receive.png"));
byte[] buffer = new byte[1024];
int len;
while ((len = is.read(buffer)) != -1)
{fos.write(buffer,0,len);
}
- 接收完毕关闭客户端可以关闭资源
OutputStream os = socket.getOutputStream();
os.write("接收完毕,可关闭连接.".getBytes());
os.close();
fos.close();
is.close();
socket.close();
serverSocket.close();
java进阶之---------网络编程相关推荐
- Java进阶之网络编程
网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者可能觉得网络编 ...
- JAVA进阶案例 TCP编程之网络聊天工具(服务端)
实现分析. 1.开启服务端 客户端选择'登录以后'后,提示输入用户名和密码,验证成功则进入好友列表界面 2.用户聊天 双击好友,进入好友聊天界面.在信息框编辑信息 点击发送 当客户端向服务端发送数据时 ...
- Java语言进阶:网络编程入门
Java语言进阶:网络编程 网络编程入门 C/S C/S结构 :全称为Client/Server结构,是指客户端和服务器结构.常见程序有QQ.迅雷等软件. 特点: 客户端和服务器是分开的,需要下载客户 ...
- Java学习之网络编程实例
转自:http://www.cnblogs.com/springcsc/archive/2009/12/03/1616413.html 多谢分享 网络编程 网络编程对于很多的初学者来说,都是很向往的一 ...
- Java学习笔记-网络编程
Java提供了网络编程,并且在实际中有着大量运用 网络编程 网络编程概述 网络模型 OSI参考模型 TCP/IP参考模型 网络通讯要素 IP地址 端口号 传输协议 网络参考模型 网络通讯要素 IP地址 ...
- 【java笔记】网络编程概述
[java笔记]TCP通信程序_m0_52043808的博客-CSDN博客 [java笔记]网络编程:文件上传案例_m0_52043808的博客-CSDN博客 网络编程: 在一定协议下,实现两台计算机 ...
- 学习Java第十九天(一):1、Java中的网络编程
1.Java中的网络编程 什么是网络? 在计算机领域中网络是信息传输,接收共享的虚拟平台,通过它把各个点,面,体的联系到一起,从而实现这些资源的共享. 作用:信息传输,资源共享 有点:资源共享免费 O ...
- Java之HTTP网络编程(下篇:网页浏览器程序设计)
目录 一.本篇简介 二.URL类 三.基于URL类的网页下载 1.发送按钮 2.接收数据的多线程 四.URL网页下载客户端 五.编写web浏览器 1.WebEngine类 2.WebView类 3.W ...
- java程序设计之网络编程基础教程_Java程序设计之网络编程基础教程
基本信息 书名:Java程序设计之网络编程基础教程(21世纪高等学校计算机基础实用规划教材) :43.50元 作者:李芝兴 主编 出版社:清华大学出版社 出版日期:2012-12-1 ISBN:978 ...
最新文章
- matplotlib 子图超过4个_走进Matplotlib世界(四)
- python music21将音符转为mid格式音乐
- 基于angular4+ng-bootstrap+bootstrap+scss的后台管理系统界面
- 数字图像处理实验(11):PROJECT 05-02,Noise Reduction Using a Median Filter
- 关于谷歌地图坐标与百度地图坐标的事
- [漫画]~RAGNAROK~(I部II部.全收入)
- 有两个链表a,b,设结点包括学号,姓名。从a链表中删去与b链表中有相同学号的那些结点。
- [Serializable]在C#中的作用——实现.NET对象序列化
- Java中为什么使用事务?什么时候使用事务?如何使用事务?
- C语言中register类型变量
- 推荐Arduino更深入学习:《新概念51单片机C语言教程》-郭天祥(文章内含学习资料供下载)
- 1000mx3连电脑没声音_Mac电脑没声音了怎么办?解决Mac上声音问题
- Stata:实时估计个股贝塔(beta)系数
- Default changeset implementation allows only one operation
- java 泛型参数具体类型获取、泛型返回具体类型获取
- 电脑操作及相关指令、命令
- 解决git在push时报错fatal: unable to access ‘https://github.com/sup0C/a.git/‘: errno 10054
- 131个经典面试题目+答案
- 常见的web中间件java框架漏洞总结
- 机器学习性能评估——PR曲线与ROC曲线
热门文章
- 传统方式解决披萨订购(工厂模式实例)
- 爱你的男人,会主动给你的
- 短视频上热门视频剪辑中的关键注意事项
- 帮你寻找努力工作、学习、生活与不断前行的内在动机
- GEE:克里金 Kriging 空间插值(以陕西省2013年生物量为例)
- mx450计算机专业的够用吗,新一代MX450独显轻薄本已经开卖,有几个点需要注意...
- Oracle-----临时会话与临时事务的区别
- C语言(dc)中简单的加减乘除法运算
- Linux中chmod命令的使用
- ucos-ii嵌入式操作系统任务调度(二)----任务切换瞬间cpu做了什么以及任务任务切换函数OS_TASK_SW