编程语言
首页 > 编程语言> > Java之网络编程初学

Java之网络编程初学

作者:互联网

简介:

网络编程就是指多台主机之间的数据通讯操作。

网络的核心定义:有两台以上的电脑就称为网络。

如何生产更多的电脑并将其进行连接。

网络连接的目的不仅仅是进行电脑的串联,更多的是为了进行彼此之间的数据通讯,包括现在的网络游戏实质上还是网络通讯的问题,而在通讯的实现上就产生了一系列处理的协议:IP、TCP、UDP等,所谓的网络编程实际上实现的就是数据通讯操作,只是这个通讯操作需要分为客户端和服务器端。

那么针对于网络程序的开发就有了两种模型:

  - C/S(Client/Server:客户端、服务器端):

要开发出两套程序,一套程序为客户端,一套为服务器端,如果服务器端发生了改变之后客户端也要进行更新处理,这种开发可以由开发者自定义传输协议,并且使用一些私密的端口所以安全性比较高,但是开发与维护成本比较高(两套程序,变一则都变);

  - B/S(Browse/Server:浏览器、服务器端):

只开发服务器端的程序,而后利用浏览器作为客户端进行访问,这种开发与维护的成本较低(只有一套程序),但是由于使用的公共的HTTP协议,并且使用的公共的80端口,所以其安全性较低,现在的开发基本上以“B/S”结构为主;

 

 

C/S程序模型(TCP[可靠的数据连接]、UDP[不可靠的数据连接]):

 

TCP程序的基本实现:

TCP的程序开发是网络程序最基本的开发模型,其核心是使用两个类实现数据的交互处理:ServerSocket(服务器端)、Socket(客户端)

ServerSocket设置服务器连接端口,Socket需要指明服务器的地址与端口。

Echo模型

客户端有接收和输出操作,服务器端也有接收和输出操作。

实现一个Echo模型操作:

服务器端: 

import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class serverSocket {
    public static void main(String[] args) throws Exception {
        ServerSocket server = new ServerSocket(9999);    // 设置服务器端的监听端口
        System.out.println("等待客户端连接.......");
        Socket client = server.accept();    // 有客户端的连接
        // 首先需要先接收客户端发送的信息然后将信息发送回客户端
        Scanner sc = new Scanner(client.getInputStream());    // 客户端输入流
        sc.useDelimiter("\n");    // 等待输入
        PrintStream out = new PrintStream(client.getOutputStream());    // 客户端输出流
        boolean flag = true;
        while(flag) {
            if(sc.hasNext()) {    // 如果有数据
                String val = sc.next();    // 接收发送的数据
                if("byebye".equalsIgnoreCase(val)) {
                    out.println("再见!");
                    flag = false;
                }else {
                    out.println("【Ehco】" + val);
                }
            }
        }
        sc.close();
        out.close();
        client.close();
        server.close();
        
    }
}

客户端:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;

public class socketClient {
    private static final BufferedReader KEY_INPUT = new BufferedReader(new InputStreamReader(System.in));
    public static void main(String[] args) throws Exception {
        Socket client = new Socket("localhost",9999);    // 定义服务器端的连接信息
        // 现在客户端需要有输入与输出的操作
        Scanner sc = new Scanner(client.getInputStream());    // 接收服务器端的输入内容
        sc.useDelimiter("\n");
        PrintStream out = new PrintStream(client.getOutputStream());    // 向服务器端输出内容
        boolean flag = true;
        while (flag) {
            String input = getString("请输入发送的内容:").trim();
            out.println(input);    // 加换行
            if(sc.hasNext()) {    // 服务器端回应
                System.out.println(sc.next());
            }
            if("byebye".equalsIgnoreCase(input)) {
                flag = false;
            }
        }
        sc.close();
        out.close();
        client.close();
    }
    public static String getString(String prompt) throws Exception{
        System.out.print(prompt);
        String str = KEY_INPUT.readLine();
        return str;
    }
}输出结果:


以上就是最基本的客户端与服务器端的操作实现。

 

标签:Java,服务器端,java,编程,初学,sc,import,out,客户端
来源: https://www.cnblogs.com/0099-ymsml/p/16028591.html