1. 程式人生 > 實用技巧 >網路程式設計之 TCP 實現簡單聊天

網路程式設計之 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, 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 {
            //關閉資源
            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();
                }
            }
        }
    }

}