1. 程式人生 > 程式設計 >Java 網路程式設計之 TCP 實現簡單的聊天系統

Java 網路程式設計之 TCP 實現簡單的聊天系統

客戶端

1、連線伺服器 Socket

2、傳送訊息

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、要知道伺服器的地址 埠號
      InetAddress serverIP = InetAddress.getByName("127.0.0.1");
      int port = 9999;
      //2、建立一個 socket 連線
      socket = new Socket(serverIP,port);
      //3、傳送訊息 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();
        }
      }
    }
  }

}

服務端

1、建立服務的埠 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;

/**
 * 服務端
 */
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,len);
        }
        System.out.println(baos.toString());
      }

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

    } catch (IOException 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、建立服務的埠 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;

/**
 * 服務端
 */
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,len);
        System.out.println(msg);
      }
      */

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

}

以上就是Java 網路程式設計之 TCP 實現簡單的聊天系統的詳細內容,更多關於Java 實現簡單的聊天系統的資料請關注我們其它相關文章!