网络编程概念和基本的TCP网络编程

网络编程就是在两个或以上的设备之间传输数据。程序员所作的事情就是把数据发送到指定的位置,或者接收到指定的数据,这个就是狭义的网络编程,基础的网络编程有专门的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类型的网络编程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值