跟著做的,可是有錯誤,關于socket,,,
package com.imooc;
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;
/*
?* 基于TCP協議的Socket通信,實現用戶登錄 ? ? ? ??
?* 服務器端
?*/
public class Server {
public static void main(String[] args) {
try {//1.創建一個服務器端Socket,即ServerSocket,指定綁定的端口,并監聽此端口
ServerSocket serverSocket=new ServerSocket(8888);
//2.調用accept()方法開始監聽,等待客戶端的連接
System.out.println("******服務器即將啟動等待客戶端的連接**********");
Socket socket=serverSocket.accept();
//3.獲取輸入流,讀取客戶端信息
InputStream is=socket.getInputStream();//字節輸入流
InputStreamReader isr=new InputStreamReader(is);//將字節流轉換為字符流
BufferedReader br=new BufferedReader(isr);//為字符流添加緩沖
String info=null;
while((info=br.readLine())!=null){
System.out.println("我是服務器??蛻舳苏f :"+info);
}
socket.shutdownInput();//關閉輸入流
//4.獲取輸出流,響應客戶端的請求
OutputStream os=socket.getOutputStream();
PrintWriter pw=new PrintWriter(os);//包裝為打印流
pw.write("歡迎您!");//響應客戶端
pw.flush();//刷新緩存
//5.關閉資源
pw.close();
os.close();
is.close();
isr.close();
br.close();
serverSocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package com.imooc;
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;
import java.net.UnknownHostException;
/*
?* 客戶端
?*/
public class Client {
public static void main(String[]args){ ? ? ? ? ?
try {
//1.創建客戶端Socket,指定地址和服務器端口
Socket socket;
socket = new Socket("localhost",8888);
//2.獲取輸出流,向服務器端發送信息
OutputStream os= socket.getOutputStream();
//字節輸出流
PrintWriter pw=new PrintWriter(os);//將輸出流轉換為打印流
pw.write("用戶名:admin;密碼:123");
socket.shutdownOutput();//關閉輸出流,寫入的數據將被發送
//3.獲取輸入流,并獲取服務器端的響應信息
InputStream is=socket.getInputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(is));
String info=null;
while((info=br.readLine())!=null){
System.out.println("我是客戶端,服務器端說:"+info);
}
//4.關閉資源
os.close();
pw.close();
socket.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
2016-02-29
是不是先啟動了客戶端??蛻舳说膕ocket聲明的時候初始化為null試試