1. 程式人生 > >網路程式設計 伺服器和客戶端之間流的傳遞

網路程式設計 伺服器和客戶端之間流的傳遞

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

/*

  • 實現TCP客戶端,連線到伺服器

  • 和伺服器實現資料交換

  • 實現TCP客戶端程式的類 java.net.Socket

  • 構造方法:

  •  Socket(String host, int port)  傳遞伺服器IP和埠號
    
  •  注意:構造方法只要執行,就會和伺服器進行連線,連線失敗,丟擲異常
    
  • OutputStream getOutputStream() 返回套接字的輸出流

  •  作用: 將資料輸出,輸出到伺服器
    
  • InputStream getInputStream() 返回套接字的輸入流

  •  作用: 從伺服器端讀取資料
    
  • 客戶端伺服器資料交換,必須使用套接字物件Socket中的獲取的IO流,自己new流,不行
    */
    public class TCPClient {
    public static void main(String[] args)throws IOException {
    //建立Socket物件,連線伺服器
    Socket socket = new Socket(“127.0.0.1”, 8888);
    //通過客戶端的套接字物件Socket方法,獲取位元組輸出流,將資料寫向伺服器
    OutputStream out = socket.getOutputStream();
    out.write(“伺服器OK”.getBytes());

    //讀取伺服器發回的資料,使用socket套接字物件中的位元組輸入流
    InputStream in = socket.getInputStream();
    byte[] data = new byte[1024];
    int len = in.read(data);
    System.out.println(new String(data,0,len));

    socket.close();
    }
    }

伺服器端
package cn.itcast.demo3;

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

/*

  • 實現TCP伺服器程式

  • 表示伺服器程式的類 java.net.ServerSocket

  • 構造方法:

  • ServerSocket(int port) 傳遞埠號

  • 很重要的事情: 必須要獲得客戶端的套接字物件Socket

  • Socket accept()
    */
    public class TCPServer {
    public static void main(String[] args) throws IOException{
    ServerSocket server = new ServerSocket(8888);
    //呼叫伺服器套接字物件中的方法accept() 獲取客戶端套接字物件
    Socket socket = server.accept();
    //通過客戶端套接字物件,socket獲取位元組輸入流,讀取的是客戶端傳送來的資料
    InputStream in = socket.getInputStream();
    byte[] data = new byte[1024];
    int len = in.read(data);
    System.out.println(new String(data,0,len));

    //伺服器向客戶端回資料,位元組輸出流,通過客戶端套接字物件獲取位元組輸出流
    OutputStream out = socket.getOutputStream();
    out.write(“收到,謝謝”.getBytes());

    socket.close();
    server.close();
    }
    }