JAVA网络编程案例教程,java是一个网络编程语言,简单易学
Yyds干货库存
一、基本概述(一)基本介绍JAVA是互联网上的一种语言。它在语言层面上提供了对网络应用的支持,使得开发通用应用变得容易。同时Java还提供了网络类库,可以方便网络连接。
(二)计算机网络计算机网络是分布在各地(=2)的具有自主功能的计算机(完全自处理设备)的集合。
网络编程(目的):
或者通过网络协议直接或间接地与其他计算机交换数据。
核心问题(1)如何准确定位网络上的一台或多台主机以及主机上的具体应用?
(2)如何高效传输数据?
网络元件(1)的IP地址用于识别计算机网络中的主机。
本地环回地址(hostAdderss): 127.0.0.1
主机名):本地主机
IP分类
IPV4:四个字节,可以代表大约42亿个不同的主机(点分十进制)
IPV6:十六个字节,写成八个无符号整数,每个用四个十六进制位表示,
用“:”分隔。
(2)端口号每台计算机中有许多进程。为了便于两台计算机中的进程之间的通信,引入了端口号来表示计算机中运行的进程。
解释
不同的进程有不同的端口号。
端口号用16位二进制整数表示(范围从0到65535)。
端口号和IP地址组合可以给出一个网络套接字:Socket。
(3)主机表达方式1: IP地址(hostAddress)
方法2:域名(主机名)
因为IP地址难以记忆和管理,所以引入了“域名”。连接网络后,输入主机域名,域名服务器(DNS)会将域名解析为
IP地址,以便您可以与主机建立连接。
(4)网络通信协议
传输层的两个重要协议是:
Tcp(传输控制协议):传输控制协议。
UDP(用户数据报协议):用户数据块协议。
介绍如下:
套接字:代表唯一标识的IP地址和端口号的组合。
网络中两台主机通信时,通信两端都需要套接字,网络通信本质上就是套接字通信。
Socket允许程序将网络连接视为一个流,数据通过IO在两个Socket之间传输。
发起通信服务的一方是客户端,等待通信请求的一方是服务端。
分类:
Socket:使用TCP提供可靠的字节流服务。
数据报套接字:使用UDP提供“尽力而为”的数据报服务。
有关详细信息,请参考:计算机网络概述
二。实际应用(一)实例化@测试
公共无效测试(){
InetAddress inet1=null
InetAddress inet2=null
InetAddress inet3=null
尝试{
//实例化(模式一)
inet 1=inet address . get byname( 127 . 0 . 0 . 1 );
inet 2=inet address . get byname( www . Baidu . com );
//实例化(模式2)
inet 3=inet address . getlocalhost();
} catch (UnknownHostException e) {
e . printstacktrace();
}最后{
system . out . println(inet 1);
system . out . println(inet 2);
system . out . println(inet 2 . get hostname());
system . out . println(inet 2 . gethostaddress());
system . out . println(inet 3);
}
}描述:
方法一:getByName(主机地址)
方法二:getLocalHost()
基于TCP协议的信息交换
例1:客户端将内容发送到数据终端,服务器将内容打印到控制台。
@测试
公共void客户端(){
Socket socket=null
OutputStream os=null
尝试{
inet address inet=inet address . get byname( 127 . 0 . 0 . 1 );
socket=新插座(inet,8899);
OS=socket . get output stream();
Os.write(你好,北京!。getBytes());
} catch (IOException e) {
e . printstacktrace();
}最后{
如果(os!=null) {
尝试{
OS . close();
} catch (IOException e) {
e . printstacktrace();
}
}
如果(插座!=null) {
尝试{
socket . close();
} catch (IOException e) {
e . printstacktrace();
}
}
}
}
@测试
Public void server(){//服务器端
ServerSocket serverSocket=null
Socket socket=null
输入流为=空
ByteArrayOutputStream baos=null;
尝试{
服务器套接字=新服务器套接字(8899);
套接字=服务器套接字。接受();
is=套接字。getinputstream();
baos=new ByteArrayOutputStream();
字节[]缓冲区=新字节[5];
int len
while((len=is.read(buffer))!=-1){
baos.write(buffer,0,len);
}
系统。出去。println(baos。tostring());
} catch (IOException e) {
e。printstacktrace();
}最后{
如果(baos!=null) {
尝试{
鲍斯。close();
} catch (IOException e) {
e。printstacktrace();
}
}
如果(是!=null) {
尝试{
是。close();
} catch (IOException e) {
e。printstacktrace();
}
}
如果(插座!=null) {
尝试{
插座。close();
} catch (IOException e) {
e。printstacktrace();
}
}
if(serverSocket!=null) {
尝试{
服务器套接字。close();
} catch (IOException e) {
e。printstacktrace();
}
}
}
}说明:
首先,通过服务器()开通服务,进入监听状态
而后,开启客户,开始向计算机网络服务器端发送消息
例题二:客户端发送文件给服务器,服务端将文件保存到本地
@测试
公共空的客户端(){
输出流操作系统=空
FileInputStream fis=null
尝试{
//创建一个窝
Socket Socket=新套接字(inet地址。get byname( 127。0 .0 .1 ),9090);
//获取一个输出流
OS=套接字。获取输出流();
//获取一个输入流
fis=新文件输入流(新文件(美男子. png ));
//写入数据
字节[]缓冲区=新字节[1024];
int len
while((len=fis.read(buffer))!=-1){
os.write(buffer,0,len);
}
} catch (IOException e) {
e。printstacktrace();
}最后{
//关闭流
如果(fis!=null) {
尝试{
fis。close();
} catch (IOException e) {
e。printstacktrace();
}
}
如果(os!=null) {
尝试{
OS。close();
} catch (IOException e) {
e。printstacktrace();
}
}
}
}
@测试
公共空的服务器(){
ServerSocket ss=null
Socket socket=null
输入流为=空
FileOutputStream fos=null
尝试{
//创建一个服务器
ss=新服务器套接字(9090);
//获取一个客户端的一个窝
插座=ss。接受();
//创建一个输入流
is=套接字。getinputstream();
//创建一个本地文件用来存储传递的内容
fos=新文件输出流(新文件(‘美。png’));
//将计算机网络服务器传送来的数据保存到文件中
字节[]缓冲区=新字节[1024];
int len
while((len=is.read(buffer))!=-1){
fos.write(buffer,0,len);
}
} catch (IOException e) {
e。printstacktrace();
}最后{
如果(fos!=null) {
尝试{
福斯。close();
} catch (IOException e) {
e。printstacktrace();
}
}
如果(是!=null) {
尝试{
是。close();
} catch (IOException e) {
e。printstacktrace();
}
}
如果(插座!=null) {
尝试{
插座。close();
} catch (IOException e) {
e。printstacktrace();
}
}
如果(ss!=null) {
尝试{
党卫军。close();
} catch (IOException e) {
e。printstacktrace();
}
}
}
}
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。