最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java 網(wǎng)絡(luò)編程之 TCP 實(shí)現(xiàn)簡單的聊天系統(tǒng)

 更新時間:2020年11月20日 09:06:00   作者:Hateyes  
這篇文章主要介紹了Java 網(wǎng)絡(luò)編程之 TCP 實(shí)現(xiàn)簡單的聊天系統(tǒng),幫助大家更好的理解和學(xué)習(xí)Java 網(wǎng)絡(luò)編程,感興趣的朋友可以了解下

客戶端

1、連接服務(wù)器 Socket

2、發(fā)送消息

package lesson02;

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

/**
 * 客戶端
 */
public class TcpClientDemo1 {

  public static void main(String[] args) {

    Socket socket = null;
    OutputStream os = null;

    try {
      //1、要知道服務(wù)器的地址 端口號
      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("你好,歡迎學(xué)習(xí)狂神學(xué)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();
        }
      }
    }
  }

}

服務(wù)端

1、建立服務(wù)的端口 ServerSocket

2、等待用戶的連接 accept

3、接收用戶的消息

package lesson02;

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

/**
 * 服務(wù)端
 */
public class TcpServerDemo1 {

  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());
      }

      /*
      byte[] buffer = new byte[1024];
      int len;
      while ((len = is.read(buffer)) != -1){
        String msg = new String(buffer, 0, len);
        System.out.println(msg);
      }
      */

    } catch (IOException e) {
      e.printStackTrace();
    } finally {
      //關(guān)閉資源
      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();
        }
      }
    }
  }

}

服務(wù)端

1、建立服務(wù)的端口 ServerSocket

2、等待用戶的連接 accept

3、接收用戶的消息

package lesson02;

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

/**
 * 服務(wù)端
 */
public class TcpServerDemo1 {

  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());
      }

      /*
      byte[] buffer = new byte[1024];
      int len;
      while ((len = is.read(buffer)) != -1){
        String msg = new String(buffer, 0, len);
        System.out.println(msg);
      }
      */

    } catch (IOException e) {
      e.printStackTrace();
    } finally {
      //關(guān)閉資源
      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();
        }
      }
    }
  }

}

以上就是Java 網(wǎng)絡(luò)編程之 TCP 實(shí)現(xiàn)簡單的聊天系統(tǒng)的詳細(xì)內(nèi)容,更多關(guān)于Java 實(shí)現(xiàn)簡單的聊天系統(tǒng)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java畢業(yè)設(shè)計實(shí)戰(zhàn)之醫(yī)院心理咨詢問診系統(tǒng)的實(shí)現(xiàn)

    Java畢業(yè)設(shè)計實(shí)戰(zhàn)之醫(yī)院心理咨詢問診系統(tǒng)的實(shí)現(xiàn)

    這是一個使用了java+Spring+Maven+mybatis+Vue+mysql開發(fā)的醫(yī)院心理咨詢問診系統(tǒng),是一個畢業(yè)設(shè)計的實(shí)戰(zhàn)練習(xí),具有心理咨詢問診該有的所有功能,感興趣的朋友快來看看吧
    2022-01-01
  • 七段小代碼解決Java程序常見的崩潰場景

    七段小代碼解決Java程序常見的崩潰場景

    這篇文章主要為大家介紹了七段小代碼解決Java程序常見的崩潰場景,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • springboot中rabbitmq實(shí)現(xiàn)消息可靠性機(jī)制詳解

    springboot中rabbitmq實(shí)現(xiàn)消息可靠性機(jī)制詳解

    這篇文章主要介紹了springboot中rabbitmq實(shí)現(xiàn)消息可靠性機(jī)制詳解,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-09-09
  • JAVA實(shí)現(xiàn)圖書管理系統(tǒng)項(xiàng)目

    JAVA實(shí)現(xiàn)圖書管理系統(tǒng)項(xiàng)目

    相信每一個學(xué)生學(xué)編程的時候,應(yīng)該都會寫一個小項(xiàng)目——圖書管理系統(tǒng)。為什么這么說呢?我認(rèn)為一個學(xué)校的氛圍很大一部分可以從圖書館的氛圍看出來,而圖書管理系統(tǒng)這個不大不小的項(xiàng)目,接觸的多,也比較熟悉,不會有陌生感,能夠練手,又有些難度,所以我的小項(xiàng)目也來了
    2021-10-10
  • MyBatis?Plus?導(dǎo)入IdType失敗的解決

    MyBatis?Plus?導(dǎo)入IdType失敗的解決

    這篇文章主要介紹了MyBatis?Plus?導(dǎo)入IdType失敗的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 通過一個命令輕松切換Java的版本

    通過一個命令輕松切換Java的版本

    這篇文章主要給大家介紹了如何通過一個命令輕松實(shí)現(xiàn)切換Java的版本,通過本文介紹的方法,大家就可以將jdk版本之間輕松切換,需要的朋友可以參考學(xué)習(xí),下面跟著小編一起來看看吧。
    2017-05-05
  • 自己寫的簡易版Java日志類分享

    自己寫的簡易版Java日志類分享

    這篇文章主要介紹了自己寫的簡易版Java日志類分享,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2015-06-06
  • Java Scanner類用法及nextLine()產(chǎn)生的換行符問題實(shí)例分析

    Java Scanner類用法及nextLine()產(chǎn)生的換行符問題實(shí)例分析

    這篇文章主要介紹了Java Scanner類用法及nextLine()產(chǎn)生的換行符問題,結(jié)合實(shí)例形式分析了Scanner類功能、hasNextInt()和nextInt()方法使用及nextLine()產(chǎn)生的換行符問題解決方法,需要的朋友可以參考下
    2019-03-03
  • 深入理解Spring Cloud Zuul過濾器

    深入理解Spring Cloud Zuul過濾器

    這篇文章主要給大家介紹了關(guān)于Spring Cloud Zuul過濾器的相關(guān)資料,通過閱讀本文您將了解:Zuul過濾器類型與請求生命周期、如何編寫Zuul過濾器、如何禁用Zuul過濾器和Spring Cloud為Zuul編寫的過濾器及其功能,需要的朋友可以參考下。
    2017-02-02
  • java反射拼接方法名動態(tài)執(zhí)行方法實(shí)例

    java反射拼接方法名動態(tài)執(zhí)行方法實(shí)例

    下面小編就為大家?guī)硪黄猨ava反射拼接方法名動態(tài)執(zhí)行方法實(shí)例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08

最新評論

全椒县| 龙里县| 延津县| 平顶山市| 紫阳县| 尼玛县| 淮滨县| 陕西省| 汾阳市| 岗巴县| 通海县| 蛟河市| 布尔津县| 叙永县| 阜平县| 西畴县| 延寿县| 冀州市| 桃江县| 深圳市| 广丰县| 宁明县| 宣威市| 黄大仙区| 海淀区| 罗源县| 五峰| 都匀市| 黄平县| 曲松县| 油尖旺区| 镇宁| 怀宁县| 宜章县| 龙岩市| 会同县| 明光市| 盐池县| 牡丹江市| 寻乌县| 鱼台县|