亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java網(wǎng)絡編程TCP實現(xiàn)聊天功能

 更新時間:2021年07月04日 17:07:47   作者:跑起來要帶風!  
這篇文章主要為大家詳細介紹了Java網(wǎng)絡編程TCP實現(xiàn)聊天功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

網(wǎng)絡編程TCP實現(xiàn)聊天的前提還需要掌握IO流,話不多說,直接上代碼!

客戶端:

package com.kuang.lesson02;

import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;

//客戶端
public class TcpClientDemo01 {
    public static void main(String[] args) {
        Socket socket = null;
        OutputStream os = null;

        try {
            //1、要知道服務器的地址、端口號
            InetAddress serverIP = InetAddress.getByName("127.0.0.1");
            int port = 9999;

            //2、創(chuàng)建一個socket連接
            socket = new Socket(serverIP, port);

            //3、發(fā)送消息IO流
            os = socket.getOutputStream();
            os.write("你好,Java".getBytes());
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (os != null) {
                try {
                    os.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (socket != null) {
                try {
                    socket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

服務端:

package com.kuang.lesson02;


import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

//服務端
public class TcpServerDemo01 {
    public static void main(String[] args) {
        ServerSocket serverSocket = null;
        Socket socket = null;
        InputStream is = null;
        ByteArrayOutputStream baos = null;

        try {
            //1、我得有一個地址
            serverSocket = new ServerSocket(9999);

            while (true) {
                //2、等待客戶端連接過來
                socket = serverSocket.accept();

                //3、讀取客戶端的消息
                is = socket.getInputStream();

                //管道流
                baos = new ByteArrayOutputStream();
                byte[] buffer = new byte[1024];
                int len;
                while ((len = is.read(buffer)) != -1) {
                    baos.write(buffer, 0, len);
                }
                System.out.println(baos.toString());
            }


        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //關閉資源
            if (baos != null) {
                try {
                    baos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (is != null) {
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (socket != null) {
                try {
                    socket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (serverSocket != null) {
                try {
                    serverSocket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }
}

運行結果:

1、首先運行服務端,等待接收消息,可以發(fā)現(xiàn)服務端一直在運行

2、接著運行客戶端,發(fā)送消息,可以發(fā)現(xiàn)客戶端運行結束

3、返回服務端查看,可以發(fā)現(xiàn)服務端已經(jīng)接收到了客戶端發(fā)送來的消息

4、由于是循環(huán)操作,所以只要客戶端發(fā)送消息來,服務端就能接收到,可以實現(xiàn)多次發(fā)送消息。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Hibernatede 一對多映射配置方法(分享)

    Hibernatede 一對多映射配置方法(分享)

    下面小編就為大家?guī)硪黄狧ibernatede 一對多映射配置方法(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Java語言ReadWriteLock特性實例測試

    Java語言ReadWriteLock特性實例測試

    這篇文章主要介紹了Java語言ReadWriteLock特性實例測試,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • springboot 中 thymeleaf 常用的語法完整實例

    springboot 中 thymeleaf 常用的語法完整實例

    在 Spring Boot 項目中,Thymeleaf 是一個常用的模板引擎,它提供了豐富的語法來動態(tài)渲染 HTML 頁面,下面給大家介紹springboot 中 thymeleaf 常用的語法完整實例,感興趣的朋友一起看看吧
    2024-03-03
  • 詳解SpringBoot定時任務功能

    詳解SpringBoot定時任務功能

    這篇文章主要介紹了SpringBoot定時任務功能詳細解析,這次的功能開發(fā)過程中也算是對其內涵的進一步了解,以后遇到定時任務的處理也更清晰,更有效率了,對SpringBoot定時任務相關知識感興趣的朋友一起看看吧
    2022-05-05
  • springboot-mysql-HikariCP集成過程

    springboot-mysql-HikariCP集成過程

    HiKariCP opens new window是數(shù)據(jù)庫連接池的一個后起之秀,號稱性能最好,可以完美地 PK 掉其他連接池,這篇文章主要介紹了springboot-mysql-HikariCP集成過程,需要的朋友可以參考下
    2023-07-07
  • Spring整合Struts2的兩種方法小結

    Spring整合Struts2的兩種方法小結

    下面小編就為大家?guī)硪黄猄pring整合Struts2的兩種方法小結。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • SpringBoot自定義starter啟動器的實現(xiàn)思路

    SpringBoot自定義starter啟動器的實現(xiàn)思路

    這篇文章主要介紹了SpringBoot如何自定義starter啟動器,通過starter的自定義過程,能夠加深大家對SpringBoot自動配置原理的理解,需要的朋友可以參考下
    2022-10-10
  • Java多線程并發(fā)編程 并發(fā)三大要素

    Java多線程并發(fā)編程 并發(fā)三大要素

    這篇文章主要介紹了Java多線程并發(fā)編程 并發(fā)三大要素,需要的朋友可以參考下
    2017-05-05
  • SpringBoot導出Excel的四種實現(xiàn)方式

    SpringBoot導出Excel的四種實現(xiàn)方式

    近期接到了一個小需求,要將系統(tǒng)中的數(shù)據(jù)導出為Excel,且能將Excel數(shù)據(jù)導入到系統(tǒng),對于大多數(shù)研發(fā)人員來說,這算是一個最基本的操作了,本文就給大家總結一下SpringBoot導出Excel的四種實現(xiàn)方式,需要的朋友可以參考下
    2024-01-01
  • 線程安全的單例模式的幾種實現(xiàn)方法分享

    線程安全的單例模式的幾種實現(xiàn)方法分享

    線程安全的單例模式實現(xiàn)有幾種思路,個人認為第2種方案最優(yōu)雅:、餓漢式、借助內部類、普通加鎖解決、雙重檢測,但要注意寫法,如果單體模式繼續(xù)擴展為N元單體模式,那就是對象池模式了
    2014-02-02

最新評論