在上一篇文章里面已經(jīng)提到過socket的一些基本原理了与纽,這里我就不一一解釋了,大家感到疑惑的話可以去我的主頁查看
好了芥玉,我們現(xiàn)在進入正題蛇摸,要想發(fā)送信息,肯定得有一個服務器和一個客戶端
首先我們來看服務器端的代碼:
package 網(wǎng)絡(luò)聊天;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class L2 {
public L2(){try{
ServerSocket ss=new ServerSocket(9999);//設(shè)置服務器的端口
System.out.println("服務器正在監(jiān)聽");
Socket s=ss.accept();//只有服務器被客戶連接之后灿巧,才會執(zhí)行后面的語句
InputStreamReader isr=new InputStreamReader(s.getInputStream());//接收客戶端的數(shù)據(jù)
BufferedReader br=new BufferedReader(isr);//存入緩存
PrintWriter pw=new PrintWriter(s.getOutputStream(),true);//向客戶端傳數(shù)據(jù)
InputStreamReader isr2=new InputStreamReader(System.in);//向客戶端發(fā)送的數(shù)據(jù)是啥赶袄,由控制臺輸入
BufferedReader br2=new BufferedReader(isr2);//將控制臺輸入的數(shù)據(jù)放入緩存
while(true){
String xinxi=br.readLine();//把緩存的數(shù)據(jù)讀出來
System.out.println("客戶端說:"+xinxi);//打印出來
System.out.println("我說:");
String fasong=br2.readLine();//把緩存的數(shù)據(jù)讀出來
pw.println(fasong);//傳給客戶端
}
}catch(Exception e){
}}
public static void main(String args[]){
L2 a=new L2();
}
}
注釋比較全面,筆者就不過多解釋啦
然后是客戶端的代碼:
package 網(wǎng)絡(luò)聊天;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class L2_1 {
public static void main(String[] args){
L2_1 a=new L2_1();
}
public L2_1(){
try{
Socket s=new Socket("127.0.0.1",9999);//進入端口抠藕,前面是服務器的Ip饿肺,自己電腦一般是127.0.0.1,后面的是端口,與服務器對應
PrintWriter pw=new PrintWriter(s.getOutputStream(),true);//IO流發(fā)送
InputStreamReader isr=new InputStreamReader(System.in);//從控制臺輸入數(shù)據(jù)
BufferedReader br=new BufferedReader(isr);//存入緩存區(qū)
InputStream isr2=s.getInputStream();//讀取數(shù)據(jù)
BufferedReader br2=new BufferedReader(new InputStreamReader(isr2));//存到緩存區(qū)
while(true){
System.out.println("我發(fā)言: ");
String fasong=br.readLine();//獲取數(shù)據(jù)
pw.println(fasong);
String jieshou=br2.readLine();
System.out.println("服務器說:"+jieshou);//輸出數(shù)據(jù)
}
}catch(Exception e){
}
}
}
這樣一個基本的架構(gòu)我們就已經(jīng)弄好啦盾似!
然后就開始來驗證我們的功能啦
首先我們運行服務器的代碼敬辣,將服務器建立起來,控制臺輸出如下:
這個就表示已經(jīng)啟動成功啦
ps: 當我們運行客服端代碼的時候,控制臺會切換到客戶端去溉跃,這個時候想看服務器的控制臺點擊紅色箭頭指示下拉箭頭就可以啦汰聋!
然后我們運行客戶端的代碼,與其進行連接喊积,控制臺輸出如下:
這個時候我們在控制臺輸入我們想說的話烹困,回車躲胳,然后切換到服務器的控制臺:
可以看到我們說的話已經(jīng)傳到服務器啦蔫巩,這個時候我們再在服務器控制臺輸入我們想說的話,回車壳繁,然后切換到客戶端的控制臺:
可以看到服務器的話客戶端也收到啦绎签,這就說明我們已經(jīng)成功了
好啦,這次就到這里啦枯饿,有問題可以和我留言哦!
其他博客的鏈接:
Github個人網(wǎng)站? ??知乎? ??簡書
歡迎各位訪問哦诡必,這次就到這里啦奢方!