跟著做的,可是有錯(cuò)誤,關(guān)于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協(xié)議的Socket通信,實(shí)現(xiàn)用戶登錄 ? ? ? ??
?* 服務(wù)器端
?*/
public class Server {
public static void main(String[] args) {
try {//1.創(chuàng)建一個(gè)服務(wù)器端Socket,即ServerSocket,指定綁定的端口,并監(jiān)聽此端口
ServerSocket serverSocket=new ServerSocket(8888);
//2.調(diào)用accept()方法開始監(jiān)聽,等待客戶端的連接
System.out.println("******服務(wù)器即將啟動(dòng)等待客戶端的連接**********");
Socket socket=serverSocket.accept();
//3.獲取輸入流,讀取客戶端信息
InputStream is=socket.getInputStream();//字節(jié)輸入流
InputStreamReader isr=new InputStreamReader(is);//將字節(jié)流轉(zhuǎn)換為字符流
BufferedReader br=new BufferedReader(isr);//為字符流添加緩沖
String info=null;
while((info=br.readLine())!=null){
System.out.println("我是服務(wù)器??蛻舳苏f :"+info);
}
socket.shutdownInput();//關(guān)閉輸入流
//4.獲取輸出流,響應(yīng)客戶端的請(qǐng)求
OutputStream os=socket.getOutputStream();
PrintWriter pw=new PrintWriter(os);//包裝為打印流
pw.write("歡迎您!");//響應(yīng)客戶端
pw.flush();//刷新緩存
//5.關(guān)閉資源
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.創(chuàng)建客戶端Socket,指定地址和服務(wù)器端口
Socket socket;
socket = new Socket("localhost",8888);
//2.獲取輸出流,向服務(wù)器端發(fā)送信息
OutputStream os= socket.getOutputStream();
//字節(jié)輸出流
PrintWriter pw=new PrintWriter(os);//將輸出流轉(zhuǎn)換為打印流
pw.write("用戶名:admin;密碼:123");
socket.shutdownOutput();//關(guān)閉輸出流,寫入的數(shù)據(jù)將被發(fā)送
//3.獲取輸入流,并獲取服務(wù)器端的響應(yīng)信息
InputStream is=socket.getInputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(is));
String info=null;
while((info=br.readLine())!=null){
System.out.println("我是客戶端,服務(wù)器端說:"+info);
}
//4.關(guān)閉資源
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
是不是先啟動(dòng)了客戶端。客戶端的socket聲明的時(shí)候初始化為null試試