網路程式設計 伺服器和客戶端之間流的傳遞
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();
}
}