Java中重點之一就是服務器與客戶端的連接,因為是在同一台PC上,所以就設置服務器的地址為“localhost”,注意,我當時試着設置其他名稱,但都不行,這個原因還請老司機告一下。另外還要注意,服務端先於客戶端運行,廢話不多說,上代碼了
package com.myinfo;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
private static Socket accept;
/**
* 服務器端的應用
*
* @param args
*/
public static void main(String[] args) {
try {
// 1.創建Server服務器端的連接,並指定監聽端口號
ServerSocket server = new ServerSocket(8008);
// 2.建立accept()連接
System.out.println("服務器即將連接,等待客戶端");
Socket socket = server.accept();
// 獲取客戶端輸入流
InputStream is = socket.getInputStream();
// 轉換成字符流
InputStreamReader isr = new InputStreamReader(is);
// 添加緩沖流
BufferedReader br = new BufferedReader(isr);
String data = null;
while ((data = br.readLine()) != null) {
// 循環讀取
System.out.println("我是服務器端,客戶端說:" + data);
}
socket.shutdownInput();//關閉輸入流
//注意,此時應先關閉輸入流之后才能獲取輸出流
// 獲取服務器端的輸出流,響應客戶端
OutputStream os = socket.getOutputStream();
PrintWriter pw = new PrintWriter(os); // 包裝流
pw.write("你好,客戶端");
pw.flush();
// 關閉可關閉的資源
os.close();
pw.close();
is.close();
isr.close();
br.close();
server.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
接下來看客戶端
package com.myinfo;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
public class Client {
/**
* 客戶端
*
* @param args
*/
public static void main(String[] args) {
try {
// 1.建立客戶端,輸入服務器的地址以及端口
Socket socket = new Socket("localhost", 8008);
// 獲取輸出流,向服務器打印信息
OutputStream os = socket.getOutputStream();
// 包裝成打印流
PrintWriter pw = new PrintWriter(os);
pw.write("用戶名:Admin 密碼:ck");
pw.flush();
socket.shutdownOutput(); //關閉輸出流
//此時應該先關閉輸出流然后在開啟輸入流
// 獲取客戶端的輸入流
InputStream is = socket.getInputStream();
// 轉換成字符流
InputStreamReader isr = new InputStreamReader(is);
BufferedReader rd = new BufferedReader(isr); // 轉換成緩沖流
String data = null;
while ((data = rd.readLine()) != null) {
// 循環讀取
System.out.println("我是客戶端,服務器端說:" + data);
}
// 關閉可關閉的資源
rd.close();
is.close();
isr.close();
pw.close();
os.close();
pw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
小白一枚,不足之處,望請指正