JAVA网络编程是什么(java 网络编程)
什么是Java网络编程
网络编程主要是指网络通信,实现计算机与计算机之间的对话和文件传输等,就像QQ,飞秋,P2P点对点传输等等
java网络编程包含些什么
针对网络通信的不同层次,Java提供的网络功能有四大类:InetAddress 、URLs、Sockets、Datagram
1、InetAddress面向的是网络层(IP层),用于标识网络上的硬件资源。
2、 URL面向的应用层,通过URL,Java程序可以直接送出或读入网络上的数据。
3、 Sockets和Datagram面向的则是传输层。Sockets使用的是TCP协议,这是传统网络程序最常用的方式,可以想象为两个不同的程序通过网络的通信信道进行通信。Datagram则使用UDP协议,是另一种网络传输方式,它把数据的目的地纪录在数据包中,然后直接放在网络上。
怎样理解java中的网络编程
Java中的网路编程主要是Java的Socket编程,属于JavaEE中的高级的部分,以下内容是对java网路编程的一个小结,代码都是经过编译调试的
C/S程序应用:客户/服务器模式,如QQ客户端,客户端连到服务器上,一个C/S模式的应用必须有两套程序,一个是客户端的程序,一个是服务器程序。
B/S程序应用:浏览器/服务器模式,如当下的各种网站都是B/S模式,所有的程序代码都在服务器上,用户通过浏览器去访问。
C/S程序分为两种:
基于TCP协议:Socket(套接字), 可靠的编程: A-B 如打电话先建立连接
基于UDP协议:不可靠,如短信功能。
如果编写一个TCP程序需要JAVA的两个包支持:
java.net.*: 主要提供网络支持;
|-ServerSocket类:服务器端程序
|-Socket类:客户端程序
java,io.*:传递信息流
客户端的两个功能:
1.建立Socket
2.接收输入的命令(输入流)-网络上传输的程序考的是字节流
以下是服务器端,客户端的两个事例程序,服务器端想客户端输出Hello word, 客户端接收并显示;
服务器程序:
import?java.io.*;
import?java.net.*;
public?class?TCPSever?{
?
????/**
?????*?@param?args
?????*?@throws?IOException
?????*/
????public?static?void?main(String[]?args)?throws?IOException?{
????????//?TODO?Auto-generated?method?stub
????????//使用ServerSocket
????????ServerSocket?server?=?new?ServerSocket(8000);
?
????????//每个用户在程序中就是一个Socket
????????Socket?client?=?null;
?
????????//等待客户端连接
????????client?=?server.accept();
?
????????//像客户端打印信息
????????PrintWriter?out?=?null;
?
????????//准被向客户端打印信息
????????out?=?new?PrintWriter(client.getOutputStream());
????????out.println("Hello?World");
????????out.close();
????????client.close();
????????server.close();
????}
?
}
客户端程序:
package?Client;
import?java.io.*;
import?java.net.*;
?
public?class?TCPClient?{
?
????/**
?????*?@param?args
?????*?@throws?IOException
?????*?@throws?UnknownHostException
?????*/
????public?static?void?main(String[]?args)?throws?UnknownHostException,?IOException?{
????????//?TODO?Auto-generated?method?stub
????????//表示一个客户端的Socket
????????Socket?client?=?null;
?
????????//表示一个客户端的输入信息
????????BufferedReader??buf?=?null;
????????client?=?new?Socket("localhost",8000);
????????buf?=?new?BufferedReader(new?InputStreamReader(client.getInputStream()));
????????System.out.println(buf.readLine());
????????buf.close();
????????client.close();
?
????}
?
}
在JDK中也准备了两个专门用于实现UDP的类
1.DatagramScoket
2.DatagramPacket
服务器端程序:
package?Client;
import?java.io.*;
import?java.net.*;
?
public?class?TCPClient?{
?
????/**
?????*?@param?args
?????*?@throws?IOException
?????*?@throws?UnknownHostException
?????*/
????public?static?void?main(String[]?args)?throws?UnknownHostException,?IOException?{
????????//?TODO?Auto-generated?method?stub
????????//表示一个客户端的Socket
????????Socket?client?=?null;
?
????????//表示一个客户端的输入信息
????????BufferedReader??buf?=?null;
????????client?=?new?Socket("localhost",8000);
????????buf?=?new?BufferedReader(new?InputStreamReader(client.getInputStream()));
????????System.out.println(buf.readLine());
????????buf.close();
????????client.close();
?
????}
?
}
客户端程序:
package?Test4;
import?java.io.*;
import?java.net.*;
public?class?UDPClient?{
?
????/**
?????*?@param?args
?????*?@throws?IOException
?????*/
????public?static?void?main(String[]?args)?throws?IOException?{
????????//?TODO?Auto-generated?method?stub
????????DatagramSocket?ds?=?null;
????????DatagramPacket?dp?=?null;
?
????????byte[]?b?=?new?byte[1024];
?
????????ds?=?new?DatagramSocket(8000);
????????dp?=?new?DatagramPacket(b,b.length);
????????ds.receive(dp);
????????String?str?=?new?String(dp.getData(),0,dp.getLength());
????????System.out.println(str);
????}
?
}