国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【網(wǎng)絡(luò)編程】(TCP流套接字編程 ServerSocket API Socket API 手寫TCP版本的回顯服務(wù)器 TCP中的長短連接)

這篇具有很好參考價(jià)值的文章主要介紹了【網(wǎng)絡(luò)編程】(TCP流套接字編程 ServerSocket API Socket API 手寫TCP版本的回顯服務(wù)器 TCP中的長短連接)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


網(wǎng)絡(luò)編程

TCP流套接字編程

TCP提供的API主要是兩個(gè)類:ServerSocket 和 Socket .
TCP不需要一個(gè)類來表示"TCP數(shù)據(jù)報(bào)"因?yàn)門CP不是以數(shù)據(jù)報(bào)為單位進(jìn)行傳輸?shù)?是以字節(jié)的方式,流式傳輸

ServerSocket API

ServerSocket 是專門給服務(wù)器使用的Socket對象.

ServerSocket 構(gòu)造方法:

ServerSocket(int port) 創(chuàng)建一個(gè)服務(wù)端流套接字Socket,并綁定到指定端口.

ServerSocket 方法:

Socketaccept()開始監(jiān)聽指定端口(創(chuàng)建時(shí)綁定的端口),有客戶端連接后,返回一個(gè)服務(wù)端Socket對象,并基于Socket建立與客戶端的連接,否則阻塞等待.

【網(wǎng)絡(luò)編程】(TCP流套接字編程 ServerSocket API Socket API 手寫TCP版本的回顯服務(wù)器 TCP中的長短連接),網(wǎng)絡(luò),網(wǎng)絡(luò),tcp/ip,服務(wù)器,intellij-idea,java,網(wǎng)絡(luò)協(xié)議,單例模式

voidclose() 關(guān)閉此套接字

Socket API

Socket是既會給客戶端使用,也會給服務(wù)器使用.

Socket 構(gòu)造方法:在服務(wù)器這邊是有accept返回的.在客戶端這邊,在代碼里構(gòu)造的時(shí)候制定一個(gè)IP和端口號.(此處的IP和端口是服務(wù)器IP和端口)有了這個(gè)信息就能和服務(wù)器進(jìn)行連接了.

Socket(String host, intport)創(chuàng)建一個(gè)客戶端流套接字Socket,并與對應(yīng)IP的主機(jī)上,對應(yīng)端口的進(jìn)程建立連接.
【網(wǎng)絡(luò)編程】(TCP流套接字編程 ServerSocket API Socket API 手寫TCP版本的回顯服務(wù)器 TCP中的長短連接),網(wǎng)絡(luò),網(wǎng)絡(luò),tcp/ip,服務(wù)器,intellij-idea,java,網(wǎng)絡(luò)協(xié)議,單例模式

Socket 方法:

進(jìn)一步通過Socket對象獲取內(nèi)部的流對象,借助流對象來進(jìn)行發(fā)送/接收.

InetAddress getInetAddress() 返回套接字所連接的地址
InputStream getInputStream() 返回此套接字的輸入流
OutputStream getOutputStream() 返回此套接字的輸出流

TCP中的長短連接

在TCP有連接的場景下,針對連接這個(gè)概念,有兩種典型的表現(xiàn)形式.

  1. 短連接:客戶端每次給服務(wù)器發(fā)消息,先建立連接,發(fā)送請求;下次再發(fā)送,則重新建立連接.

  2. 長連接:客戶端建立連接后,連接先不斷開,然后再次發(fā)送請求,讀取響應(yīng);再發(fā)送請求,讀取響應(yīng);若干輪之后,客戶端確實(shí)短時(shí)間之內(nèi)不再需要使用這個(gè)連接了,此時(shí)再斷開.

兩者區(qū)別:

  1. 建立連接、關(guān)閉連接的耗時(shí):短連接每次請求、響應(yīng)都需要建立連接,關(guān)閉連接;而長連接只需要第一次建立連接,之后的請求、響應(yīng)都可以直接傳輸。相對來說建立連接,關(guān)閉連接也是要耗時(shí)的,長連接效率更高。
  2. 主動(dòng)發(fā)送請求不同:短連接一般是客戶端主動(dòng)向服務(wù)端發(fā)送請求;而長連接可以是客戶端主動(dòng)發(fā)送請求,也可以是服務(wù)端主動(dòng)發(fā)。
  3. 兩者的使用場景有不同:短連接適用于客戶端請求頻率不高的場景,如瀏覽網(wǎng)頁等。長連接適用于客戶端與服務(wù)端通信頻繁的場景,如聊天室,實(shí)時(shí)游戲等。

拓展了解:
【網(wǎng)絡(luò)編程】(TCP流套接字編程 ServerSocket API Socket API 手寫TCP版本的回顯服務(wù)器 TCP中的長短連接),網(wǎng)絡(luò),網(wǎng)絡(luò),tcp/ip,服務(wù)器,intellij-idea,java,網(wǎng)絡(luò)協(xié)議,單例模式

手寫TCP版本的回顯服務(wù)器

【網(wǎng)絡(luò)編程】(TCP流套接字編程 ServerSocket API Socket API 手寫TCP版本的回顯服務(wù)器 TCP中的長短連接),網(wǎng)絡(luò),網(wǎng)絡(luò),tcp/ip,服務(wù)器,intellij-idea,java,網(wǎng)絡(luò)協(xié)議,單例模式

TCP服務(wù)端

public class TcpEchoServer {
    private ServerSocket serverSocket = null;

    public TcpEchoServer(int port) throws IOException {
        serverSocket = new ServerSocket(port);
    }
    public void start() throws IOException {
        System.out.println("啟動(dòng)服務(wù)器!");
        while (true) {
            //使用這個(gè)clientSocket和具體的客戶端進(jìn)行交流
            Socket clinentSocket = serverSocket.accept();
            processConnection(clinentSocket);
        }
    }
    //使用這個(gè)方法處理一個(gè)連接 一個(gè)連接對應(yīng)一個(gè)客戶端
    //可能涉及到多次交互
    private void processConnection(Socket clinentSocket) {
        //獲得客戶端IP和端口
        System.out.printf("[%s:%d] 客戶端上線!\n",clinentSocket.getInetAddress().toString(),clinentSocket.getPort());
        // 基于上述socket對象和客戶端進(jìn)行通信
        try(InputStream inputStream = clinentSocket.getInputStream();
            OutputStream outputStream = clinentSocket.getOutputStream()){
            //由于要處理多個(gè)請求和響應(yīng),也是使用循環(huán)
            while (true){
                //1. 讀取請求
                Scanner scanner = new Scanner(inputStream);
                if(!scanner.hasNext()){
                    //沒有下一個(gè)數(shù)據(jù) 說明讀完了 (客戶端關(guān)閉了連接)
                    System.out.printf("[%s:%d] 客戶端下線!\n",clinentSocket.getInetAddress().toString(),clinentSocket.getPort());
                    break;
                }
                //此處使用next是一直讀取到換行符/空格/其他空白符結(jié)束
                //但是結(jié)果不包含上述空白符
                String request = scanner.next();
                //2. 根據(jù)請求響應(yīng)
                String response = process(request);
                //3. 返回響應(yīng)結(jié)果
                //outputStream沒有write String這樣的功能 可以把String里的字節(jié)數(shù)組拿出來 進(jìn)行寫入
                //也可以用字符流來轉(zhuǎn)換一下
                PrintWriter printWriter = new PrintWriter(outputStream);
                //此處使用println來寫入 讓結(jié)果中帶有一個(gè)\n 換行 方便對端來接收解析
                printWriter.println(response);
                //flush用來刷新緩沖區(qū) 保證當(dāng)前寫入的數(shù)據(jù) 確實(shí)是發(fā)送出去了
                printWriter.flush();
                System.out.printf("[%s:%d] req: %s; resp: %s \n",clinentSocket.getInetAddress().toString(),clinentSocket.getPort(),
                        request,response);
            }
        }catch (IOException e){
            e.printStackTrace();
        }finally {
            try {
                clinentSocket.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    public String process(String request) {
        return request;
    }
    public static void main(String[] args) throws IOException {
        TcpEchoServer server = new TcpEchoServer(9090);
        server.start();
    }
}

TCP客戶端

public class TcpEchoClient {
    private Socket socket = null;

    public TcpEchoClient(String serverIp,int serverPort) throws IOException {
        //Socket 構(gòu)造方法能夠識別 電分十進(jìn)制格式的IP地址 比DatagramPacket 更方便
        //new 這個(gè)對象的同時(shí),就會進(jìn)行 TCP 連接操作
        socket = new Socket(serverIp,serverPort);
    }

    public void start(){
        System.out.println("客戶端啟動(dòng)!");
        Scanner scanner = new Scanner(System.in);
        try (InputStream inputStream = socket.getInputStream();
             OutputStream outputStream = socket.getOutputStream()){
            while (true){
                //1. 先從鍵盤上讀取用戶輸入的內(nèi)容
                System.out.println("> ");
                String request = scanner.next();
                if(request.equals("exit")){
                    System.out.println("goodbye");
                    break;
                }
                //2.  把讀到的內(nèi)容構(gòu)造成請求 發(fā)送給服務(wù)器
                PrintWriter printWriter = new PrintWriter(outputStream);
                printWriter.println(request);
                //加flush保證數(shù)據(jù)確實(shí)發(fā)送出去了
                printWriter.flush();
                //3. 讀取服務(wù)器響應(yīng)
                Scanner respScanner = new Scanner(inputStream);
                String response = respScanner.next();
                //4. 把響應(yīng)顯示到界面上
                System.out.println(response);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) throws IOException {
        TcpEchoClient tcpEchoClient = new TcpEchoClient("127.0.0.1",9090);
        tcpEchoClient.start();
    }
}

問題:

當(dāng)前代碼里使用的是println來發(fā)送數(shù)據(jù),println會在發(fā)送的數(shù)據(jù)后面自動(dòng)帶上\n換行.如果不適用println,而是使用print(不帶\n換行) 上面的代碼是否能正確運(yùn)行?

不能正確運(yùn)行,沒有\(zhòng)n是不行的.TCP協(xié)議是面向字節(jié)流的協(xié)議(字節(jié)流特性:一次讀多少個(gè)字節(jié)都行).接收方無法知道我們一次要多多少字節(jié),這就需要我們在數(shù)據(jù)傳輸中進(jìn)行明確的約定.此處代碼中,隱式約定了使用\n來作為當(dāng)前代碼的請求/響應(yīng)分割約定.
【網(wǎng)絡(luò)編程】(TCP流套接字編程 ServerSocket API Socket API 手寫TCP版本的回顯服務(wù)器 TCP中的長短連接),網(wǎng)絡(luò),網(wǎng)絡(luò),tcp/ip,服務(wù)器,intellij-idea,java,網(wǎng)絡(luò)協(xié)議,單例模式
但是我們發(fā)現(xiàn)上面的代碼還是存在一些問題的:
【網(wǎng)絡(luò)編程】(TCP流套接字編程 ServerSocket API Socket API 手寫TCP版本的回顯服務(wù)器 TCP中的長短連接),網(wǎng)絡(luò),網(wǎng)絡(luò),tcp/ip,服務(wù)器,intellij-idea,java,網(wǎng)絡(luò)協(xié)議,單例模式
為解決上面的問題,我們使用多線程,主線程負(fù)責(zé)進(jìn)行accept.每次接收到一個(gè)連接,創(chuàng)建新線程 ,由這個(gè)新的線程負(fù)責(zé)處理這個(gè)新的客戶端.每個(gè)線程是獨(dú)立的執(zhí)行流.每個(gè)獨(dú)立的執(zhí)行流是各自執(zhí)行各自的邏輯,彼此之間是并發(fā)關(guān)系.不會出現(xiàn)一邊阻塞而影響到另一邊執(zhí)行的情況.

如果服務(wù)器,客戶端特別多,很多客戶端頻繁建立連接就需要頻繁創(chuàng)建/銷毀線程了, 此時(shí)單純的多線程的處理方法也不行了,所以我們就得用線程池來進(jìn)行處理.

【網(wǎng)絡(luò)編程】(TCP流套接字編程 ServerSocket API Socket API 手寫TCP版本的回顯服務(wù)器 TCP中的長短連接),網(wǎng)絡(luò),網(wǎng)絡(luò),tcp/ip,服務(wù)器,intellij-idea,java,網(wǎng)絡(luò)協(xié)議,單例模式

如果客戶端非常多而且客戶端連接都遲遲不斷開,就會導(dǎo)致機(jī)器上有很多線程.如果一個(gè)服務(wù)器有幾千個(gè)客戶端就得是幾千個(gè)線程.這個(gè)事情對機(jī)器來說,是一個(gè)很大的負(fù)擔(dān).這個(gè)時(shí)候?yàn)榱私鉀Q單機(jī)支持更大量客戶端的問題即C10M問題.就想辦法讓一個(gè)線程,處理多個(gè)客戶端連接.為了解決這個(gè)問題操作系統(tǒng)底層提出了IO多路復(fù)用,IO多路轉(zhuǎn)接.就是利用充分等待時(shí)間,做別的事情.我們給這個(gè)線程安排個(gè)集合,這個(gè)集合就放了一堆連接.這個(gè)線程就負(fù)責(zé)監(jiān)聽這個(gè)集合,哪個(gè)連接有數(shù)據(jù)來了,線程就來處理哪個(gè)連接,雖然連接有很多,總還是有先有后的.操作系統(tǒng)提供了一些原生API ,select,poll,epoll.在Java中,提供了一組NIO這樣類,就封裝了上述多路復(fù)用的API.

改進(jìn)后:TCP服務(wù)器代碼

public class TcpEchoServer {
    private ServerSocket serverSocket = null;

    public TcpEchoServer(int port) throws IOException {
        serverSocket = new ServerSocket(port);
    }
    public void start() throws IOException {
        System.out.println("啟動(dòng)服務(wù)器!");
        //此處使用CachedThreadPool ,使用FixedThreadPool不太合適(線程數(shù)不太應(yīng)該是固定的 )
        ExecutorService threadPool = Executors.newCachedThreadPool();
        while (true) {
            //使用這個(gè)clientSocket和具體的客戶端進(jìn)行交流
            Socket clinentSocket = serverSocket.accept();
            //此處使用多線程處理
            /*Thread t = new Thread(()->{
                processConnection(clinentSocket);
            });*/
            //使用線程池
            threadPool.submit(()->{
                processConnection(clinentSocket);
            });
        }
    }
    //使用這個(gè)方法處理一個(gè)連接 一個(gè)連接對應(yīng)一個(gè)客戶端
    //可能涉及到多次交互
    private void processConnection(Socket clinentSocket) {
        //獲得客戶端IP和端口
        System.out.printf("[%s:%d] 客戶端上線!\n",clinentSocket.getInetAddress().toString(),clinentSocket.getPort());
        // 基于上述socket對象和客戶端進(jìn)行通信
        try(InputStream inputStream = clinentSocket.getInputStream();
            OutputStream outputStream = clinentSocket.getOutputStream()){
            //由于要處理多個(gè)請求和響應(yīng),也是使用循環(huán)
            while (true){
                //1. 讀取請求
                Scanner scanner = new Scanner(inputStream);
                if(!scanner.hasNext()){
                    //沒有下一個(gè)數(shù)據(jù) 說明讀完了 (客戶端關(guān)閉了連接)
                    System.out.printf("[%s:%d] 客戶端下線!\n",clinentSocket.getInetAddress().toString(),clinentSocket.getPort());
                    break;
                }
                //此處使用next是一直讀取到換行符/空格/其他空白符結(jié)束
                //但是結(jié)果不包含上述空白符
                String request = scanner.next();
                //2. 根據(jù)請求響應(yīng)
                String response = process(request);
                //3. 返回響應(yīng)結(jié)果
                //outputStream沒有write String這樣的功能 可以把String里的字節(jié)數(shù)組拿出來 進(jìn)行寫入
                //也可以用字符流來轉(zhuǎn)換一下
                PrintWriter printWriter = new PrintWriter(outputStream);
                //此處使用println來寫入 讓結(jié)果中帶有一個(gè)\n 換行 方便對端來接收解析
                printWriter.println(response);
                //flush用來刷新緩沖區(qū) 保證當(dāng)前寫入的數(shù)據(jù) 確實(shí)是發(fā)送出去了
                printWriter.flush();
                System.out.printf("[%s:%d] req: %s; resp: %s \n",clinentSocket.getInetAddress().toString(),clinentSocket.getPort(),
                        request,response);
            }
        }catch (IOException e){
            e.printStackTrace();
        }finally {
            try {
                clinentSocket.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    public String process(String request) {
        return request;
    }
    public static void main(String[] args) throws IOException {
        TcpEchoServer server = new TcpEchoServer(9090);
        server.start();
    }
}

【網(wǎng)絡(luò)編程】(TCP流套接字編程 ServerSocket API Socket API 手寫TCP版本的回顯服務(wù)器 TCP中的長短連接),網(wǎng)絡(luò),網(wǎng)絡(luò),tcp/ip,服務(wù)器,intellij-idea,java,網(wǎng)絡(luò)協(xié)議,單例模式文章來源地址http://www.zghlxwxcb.cn/news/detail-653782.html

到了這里,關(guān)于【網(wǎng)絡(luò)編程】(TCP流套接字編程 ServerSocket API Socket API 手寫TCP版本的回顯服務(wù)器 TCP中的長短連接)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【網(wǎng)絡(luò)編程】網(wǎng)絡(luò)編程套接字(三)TCP網(wǎng)絡(luò)程序

    【網(wǎng)絡(luò)編程】網(wǎng)絡(luò)編程套接字(三)TCP網(wǎng)絡(luò)程序

    與前邊的UDP網(wǎng)絡(luò)程序相同,創(chuàng)建套接字的接口都是socket,下邊對socket接口進(jìn)行介紹: 協(xié)議家族選擇AF_INET,因?yàn)槲覀円M(jìn)行網(wǎng)絡(luò)通信。 而第二個(gè)參數(shù),為服務(wù)類型,傳入SOCK_STREAM,我們編寫TCP程序,所以要選擇流式的服務(wù)。 第三個(gè)參數(shù)默認(rèn)傳入0,由前兩個(gè)參數(shù)就可以推出這是

    2024年02月16日
    瀏覽(91)
  • 【Linux網(wǎng)絡(luò)】網(wǎng)絡(luò)編程套接字(TCP)

    【Linux網(wǎng)絡(luò)】網(wǎng)絡(luò)編程套接字(TCP)

    目錄 地址轉(zhuǎn)換函數(shù) 字符串IP轉(zhuǎn)整數(shù)IP 整數(shù)IP轉(zhuǎn)字符串IP 關(guān)于inet_ntoa 簡單的單執(zhí)行流TCP網(wǎng)絡(luò)程序 TCP socket API 詳解及封裝TCP socket? 服務(wù)端創(chuàng)建套接字? 服務(wù)端綁定? 服務(wù)端監(jiān)聽? 服務(wù)端獲取連接? 服務(wù)端處理請求 客戶端創(chuàng)建套接字 客戶端連接服務(wù)器 客戶端發(fā)起請求 服務(wù)器測試

    2024年03月21日
    瀏覽(112)
  • 【Linux】網(wǎng)絡(luò)---->套接字編程(TCP)

    【Linux】網(wǎng)絡(luò)---->套接字編程(TCP)

    TCP的編程流程:大致可以分為五個(gè)過程,分別是準(zhǔn)備過程、連接建立過程、獲取新連接過程、消息收發(fā)過程和斷開過程。 1.準(zhǔn)備過程:服務(wù)端和客戶端需要?jiǎng)?chuàng)建各自的套接字,除此之外服務(wù)端還需要綁定自己的地址信息和進(jìn)行監(jiān)聽。注意:服務(wù)端調(diào)用listen函數(shù)后,處理監(jiān)聽狀

    2024年02月04日
    瀏覽(101)
  • Linux網(wǎng)絡(luò)編程——tcp套接字

    Linux網(wǎng)絡(luò)編程——tcp套接字

    本章Gitee倉庫:tcp套接字 客戶端: 客戶端: 關(guān)于構(gòu)造和初始化,可以直接在構(gòu)造的時(shí)候,將服務(wù)器初始化,那為什么還要寫到 init 初始化函數(shù)里面呢? 構(gòu)造盡量簡單一點(diǎn),不要做一些“有風(fēng)險(xiǎn)”的操作。 tcp 是面向連接的,通信之前要建立連接,服務(wù)器處于等待連接到來的

    2024年02月20日
    瀏覽(95)
  • 網(wǎng)絡(luò)編程套接字之三【TCP】

    網(wǎng)絡(luò)編程套接字之三【TCP】

    目錄 1. ServerSocket API(給服務(wù)器端使用的類) 2. Socket API(既給服務(wù)器使用,也給客戶端使用) 3. 寫TCP回顯—服務(wù)器 4. 使用線程池后的TCP服務(wù)器代碼(最終) 5. 寫回顯-客戶端 6. TCP回顯—客戶端代碼 7. 運(yùn)行回顯服務(wù)器和客戶端 TCP流套接字編程 ?ServerSocket 是創(chuàng)建TCP服務(wù)端Socket的

    2024年01月19日
    瀏覽(91)
  • 網(wǎng)絡(luò)編程套接字(2)——簡單的TCP網(wǎng)絡(luò)程序

    網(wǎng)絡(luò)編程套接字(2)——簡單的TCP網(wǎng)絡(luò)程序

    我們將TCP服務(wù)器封裝成一個(gè)類,當(dāng)我們定義出一個(gè)服務(wù)器對象后需要馬上對服務(wù)器進(jìn)行初始化,而初始化TCP服務(wù)器要做的第一件事就是創(chuàng)建套接字。 TCP服務(wù)器在調(diào)用socket函數(shù)創(chuàng)建套接字時(shí),參數(shù)設(shè)置如下: 協(xié)議家族選擇 AF_INET ,因?yàn)槲覀円M(jìn)行的是網(wǎng)絡(luò)通信。 創(chuàng)建套接字時(shí)

    2024年02月06日
    瀏覽(92)
  • 【Linux網(wǎng)絡(luò)編程】網(wǎng)絡(luò)編程套接字(TCP服務(wù)器)

    【Linux網(wǎng)絡(luò)編程】網(wǎng)絡(luò)編程套接字(TCP服務(wù)器)

    作者:愛寫代碼的剛子 時(shí)間:2024.4.4 前言:本篇博客主要介紹TCP及其服務(wù)器編碼 只介紹基于IPv4的socket網(wǎng)絡(luò)編程,sockaddr_in中的成員struct in_addr sin_addr表示32位 的IP地址 但是我們通常用點(diǎn)分十進(jìn)制的字符串表示IP地址,以下函數(shù)可以在字符串表示和in_addr表示之間轉(zhuǎn)換 字符串轉(zhuǎn)in

    2024年04月14日
    瀏覽(107)
  • TCP/IP網(wǎng)絡(luò)編程(一) 理解網(wǎng)絡(luò)編程和套接字

    網(wǎng)絡(luò)編程和套接字概要 網(wǎng)絡(luò)編程就是編寫程序使兩臺聯(lián)網(wǎng)的計(jì)算機(jī)相互交換數(shù)據(jù) 為了與遠(yuǎn)程計(jì)算機(jī)進(jìn)行數(shù)據(jù)傳輸,需要連接因特網(wǎng),而編程種的套接字就是用來連接該網(wǎng)絡(luò)的工具。 構(gòu)建套接字 1.調(diào)用soecket函數(shù)創(chuàng)建套接字 2.調(diào)用bind函數(shù)給套接字分配地址 3.調(diào)用listen函數(shù)將套

    2024年02月11日
    瀏覽(857)
  • 【網(wǎng)絡(luò)通信】socket編程——TCP套接字

    【網(wǎng)絡(luò)通信】socket編程——TCP套接字

    TCP依舊使用代碼來熟悉對應(yīng)的套接字,很多接口都是在udp中使用過的 所以就不會單獨(dú)把他們拿出來作為標(biāo)題了,只會把第一次出現(xiàn)的接口作為標(biāo)題 通過TCP的套接字 ,來把數(shù)據(jù)交付給對方的應(yīng)用層,完成雙方進(jìn)程的通信 在 tcpServer.hpp 中,創(chuàng)建一個(gè)命名空間 yzq 用于封裝 在命名

    2024年02月13日
    瀏覽(101)
  • JavaEE-網(wǎng)絡(luò)編程套接字(UDP/TCP)

    JavaEE-網(wǎng)絡(luò)編程套接字(UDP/TCP)

    下面寫一個(gè)簡單的UDP客戶端服務(wù)器流程 思路: 對于服務(wù)器端:讀取請求,并解析– 根據(jù)解析出的請求,做出響應(yīng)(這里是一個(gè)回顯,)–把響應(yīng)寫回客戶端 對于客戶端:從控制臺讀取用戶輸入的內(nèi)容–從控制臺讀取用戶輸入的內(nèi)容–從控制臺讀取用戶輸入的內(nèi)容–將其顯示在

    2024年02月07日
    瀏覽(90)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包