亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java程序間怎么進行通信

發布時間:2022-02-23 14:23:53 來源:億速云 閱讀:145 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關java程序間怎么進行通信,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

什么是socket?

socket,中文翻譯為套接字。它是一種對網絡中不同主機上的應用進程(或者相同主機的不同應用進程)之間進行雙向通信的端點的抽象。實際上就是兩個網絡各種通信連接中的端點。它的作用就是完成應用間的數據傳輸。

套接字技術簡單的來講就是通過socket,將兩個應用進行連接,連接之后就能進行數據傳輸了。socket只是實現連接的方法。 

小編認為套接字這個翻譯并不能直接反映出這門技術的特點(過于生澀),socket可以被翻譯為插座,而實際上套接字技術更像是軟件上的“插座”和“插頭”。漢語中的套接,是一種水管對接的技術,使用一個套接管將兩端的水管連接起來,這種技術就叫套接,所以是不是能理解什么是套接字了呢?

怎么使用socket?

不同語言實現套接字的方式不同,java有專門實現套接字的包。只需要import 相應的包,就可以進行套接字編程。

創建socket連接后可以通過getInputStream()getOutputStream()的方法來獲取和發送socket之間傳輸的數據。

接下來就用一個實例代碼來介紹一下怎么使用socket吧!

socket項目實戰

server.java

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

public class Server {
    public static void main(String[] args){
        try {
            ServerSocket serverSocket = new ServerSocket(8888);
            //在8888端口上監聽,看是否有連接請求過來
            System.out.println("開啟服務端");
            Socket accept = serverSocket.accept();
            //獲取socket連接
            System.out.println("有連接過來"+accept);
            Thread thread1 = new Thread(){//使用多線程來進行收發,線程1用來接收消息
                @Override
                public void run() {
                    try {
                        InputStream inputStream = accept.getInputStream();//獲取socket輸入流
                        DataInputStream dataInputStream = new DataInputStream(inputStream);
                        //把輸入流封裝在DataInputStream
                        while (true){
                            String msg = dataInputStream.readUTF();//使用readUTF讀取字符串
                            System.out.println("監聽客戶端消息: "+msg);
                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            };
            Thread thread2 = new Thread(){//線程2用來發送消息
                @Override
                public void run() {
                    try {
                        OutputStream outputStream = accept.getOutputStream();
                        //打開輸出流
                        DataOutputStream dataOutputStream = new DataOutputStream(outputStream);
                        //把輸出流封裝在DataOutputStream中
                        Scanner scanner = new Scanner(System.in);
                        while (true){
                            String strServer = scanner.next();
                            dataOutputStream.writeUTF(strServer);//使用writeUTF發送字符串
                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            };
            thread1.start();
            thread2.start();
            thread1.join();
            System.out.println("服務器關閉");
            accept.close();//關閉單個socket連接
            serverSocket.close(); //關閉這個socket 服務器
        } catch (Exception e) {
            System.out.println("斷開連接");
        }
    }
}

client.java

import java.io.*;
import java.net.Socket;
import java.util.Scanner;

public class Client {
    public static void main(String[] args) {
        String host = "127.0.0.1";//目標電腦的ip地址,這里的地址是本機地址
        int port = 8888;//目標電腦的端口
        boolean flag = true;
        try {
            Socket socket = new Socket(host, port);//創建目標連接,傳入ip地址和端口號
            System.out.println("開啟客戶端");
            Thread thread1 = new Thread() {//使用多線程方法來實行收發,線程1負責接收信息
                @Override
                public void run() {
                    try {
                        InputStream inputStream = socket.getInputStream();//獲取socket輸入流
                        DataInputStream dataInputStream = new DataInputStream(inputStream);
                        //把輸入流封裝在DataInputStream
                        while (true) {
                            String msg = dataInputStream.readUTF();//使用readUTF讀取字符串
                            System.out.println("接收服務端消息: " + msg);
                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            };
            Thread thread2 = new Thread() {//線程2用來發送消息
                @Override
                public void run() {
                    try {
                        OutputStream outputStream = socket.getOutputStream();
                        //打開輸出流
                        DataOutputStream dataOutputStream = new DataOutputStream(outputStream);
                        //把輸出流封裝在DataOutputStream中
                        Scanner scanner = new Scanner(System.in);
                        while (true) {
                            String str = scanner.next();
                            dataOutputStream.writeUTF(str);//使用writeUTF發送字符串
                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            };
            thread1.start();
            thread2.start();
            thread1.join();
            System.out.println("客戶端關閉");
            socket.close();//關閉這個socket
        } catch (Exception e) {
            System.out.println("斷開連接");
        }
    }
}

關于“java程序間怎么進行通信”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

浮梁县| 富裕县| 玉环县| 鹿邑县| 郁南县| 双牌县| 清水河县| 布尔津县| 特克斯县| 华阴市| 扶余县| 北川| 江陵县| 昌平区| 肇庆市| 天台县| 富民县| 清河县| 益阳市| 九台市| 普宁市| 禄丰县| 英超| 西盟| 天门市| 随州市| 扬州市| 泗洪县| 北安市| 星子县| 扎鲁特旗| 石景山区| 绿春县| 青神县| 西平县| 竹山县| 辽宁省| 平罗县| 永寿县| 安义县| 金塔县|