网络编程就是在两个或以上的设备之间传输数据。程序员所作的事情就是把数据发送到指定的位置,或者接收到指定的数据,这个就是狭义的网络编程,基础的网络编程有专门的API,程序员只需要调用。
网络通讯基于 请求响应模型 ,也就是一问一答。一端发送数据,另一端反馈数据。
了解基本概念和步骤后直接编程
网络客户端编程步骤:
客户端是指网络编程中首先发起连接的程序,客户端一般实现界面等。客户端的编程主要由三个步骤实现。
1、建立网络连接
第一步建立网络连接。
2、交换数据
多次进行数据的交换,但必须遵循请求响应模型。如果客户端不发送请求,那么服务器就不响应。
3.关闭网络连接
在数据交换完成后,完毕网络连接,释放程序占用的端口、内存等系统资源,结束网络编程。
服务端网络编程步骤
服务端是指网络编程中等待连接的程序,一般是程序的核心逻辑和数据存储等核心功能。主要有四个步骤。
1、监听端口
服务器端等待连接,所以服务器端启动之后不需要发起连接,只需要监听某个固定端口,这个端口就是服务器开放给客户端的端口。
2、获得连接
当客户端连接到服务器端的时候,服务器端就可以获得一个连接,服务端通过该连接进行数据交换。
3、交换数据
服务端通过获得的连接进行数据交换。
1服务端接收客户端的数据
2.进行逻辑处理
3.返回给客户端
4、关闭连接
关闭服务器端,释放资源
Java网络编程技术
与网络编程相关的基本API在java.net包中,该包是网络编程的基础。
InetAddress类
该类代表一个IP地址,有操作IP地址和域名的相关方法。
//使用域名创建对象
InetAddress inet1 = InetAddress.getByName("www.163.com");
System.out.println(inet1);
//使用IP创建对象
InetAddress inet2 = InetAddress.getByName("127.0.0.1");
System.out.println(inet2);
//获得本机地址对象
InetAddress inet3 = InetAddress.getLocalHost();
System.out.println(inet3);
//获得对象中存储的域名
String host = inet3.getHostName();
System.out.println("域名:" + host);
//获得对象中存储的IP
String ip = inet3.getHostAddress();
System.out.println("IP:" + ip);
TCP编程
网络通讯的方式有TCP和UDP两种,其中TCP方式的网络通讯是指在通讯的过程中保持连接,这样方式在实际的网络编程中,由于传输可靠,类似于打电话,如果在通话有人没有听清楚,那么说的人会一直重复,直至信息传输好为止。
而在java语言中:对底层的网络通讯的细节高度封装,所以操作简单,但是也正由于高度封装,所以使用java语言进行网络编程无法深入到网络底层。
以下是使用TCP方式进行网络编程时,在Java语言中客户端和服务器端的实现步骤。
客户端网络编程
首先建立连接,在java API中以java.net.Socket类的对象代表网络连接,所以建立客户端网络连接,首先创建Socket对象
Socket socket1 = new Socket(“192.168.1.103”,10000);
Socket socket2 = new Socket(“www.sxt.com”,80);
socket1实现的是连接到IP地址是192.168.1.103的计算机的10000号端口
scket2实现的是连接到域名是www.sxt.com的计算机的80号端口
而底层如何实现建立连接,对我们而言是看不见的。
连接建立之后,按照请求响应模型进行数据交换,在Java中,数据传输功能由IO实现,也即是:从连接中获得输入输出流,将需要发送的数据写入连接对象的输出流,在发送完成后从输入流中读取数据。
OutputStream os = socket1.getOutputStream(); //获得连接中的输出流
InputStream is = socket1.getInputStream(); //获得输入流
那么后续的数据交换就变成了IO操作,进行数据的交换。
数据交换完成后关闭连接。
socket1.close();
简单的网络客户端程序示例:将字符串Hello发送到服务端,并将反馈信息打印到控制台。
public class SimpleSocketClient {
public static void main(String[] args) {
Socket socket = null;
InputStream is = null;
OutputStream os = null;
//服务器端IP地址
String serverIP = "127.0.0.1";
//服务器端端口号
int port = 10000;
//发送内容
String data = "Hello";
try {
//建立连接
socket = new Socket(serverIP,port);
//发送数据
os = socket.getOutputStream();
os.write(data.getBytes());
//接收数据
is = socket.getInputStream();
byte[] b = new byte[1024];
int n = is.read(b);
//输出反馈数据
System.out.println("服务器反馈:" + new String(b,0,n));
} catch (Exception e) {
e.printStackTrace(); //打印异常信息
}finally{
try {
//关闭流和连接
is.close();
os.close();
socket.close();
} catch (Exception e2) {}
}
}
}
服务端网络编程
1、监听端口
ServerSocket ss = new ServerSocket(10000);
监听计算机10000号端口
2、 获得连接
Socket socket = ss.accept();
服务器端需要首先读取发送过来的数据,进行逻辑处理以后再发送给客户端,交换数据的顺序和客户端交换数据的步骤刚好相反。
3、关闭连接
ss.close();
如何复用Socket连接
将数据交换的逻辑代码块写到循环里。
以上就是Java中最基本的TCP类型的网络编程。