91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

收藏| 平谷区| 广河县| 贵定县| 佳木斯市| 维西| 合川市| 荥阳市| 万年县| 黔东| 昭通市| 高州市| 呼玛县| 枞阳县| 历史| 蒙城县| 大关县| 盱眙县| 华蓥市| 邵阳县| 商南县| 临泉县| 龙川县| 潮安县| 那坡县| 湖北省| 恩平市| 沂南县| 祁东县| 万宁市| 青浦区| 板桥市| 平昌县| 连城县| 伽师县| 镇安县| 宣威市| 黄骅市| 兴仁县| 朝阳市| 广东省|