java利用Socket在控制台互发信息
在上一篇文章里面已经提到过socket的一些基本原理了,这里我就不一一解释了,大家感到疑惑的话可以去我的主页查看
好了,我们现在进入正题,要想发送信息,肯定得有一个服务器和一个客户端
首先我们来看服务器端的代码:
package 网络聊天;
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);//设置服务器的端口
System.out.println("服务器正在监听");
Socket s=ss.accept();//只有服务器被客户连接之后,才会执行后面的语句
InputStreamReader isr=new InputStreamReader(s.getInputStream());//接收客户端的数据
BufferedReader br=new BufferedReader(isr);//存入缓存
PrintWriter pw=new PrintWriter(s.getOutputStream(),true);//向客户端传数据
InputStreamReader isr2=new InputStreamReader(System.in);//向客户端发送的数据是啥,由控制台输入
BufferedReader br2=new BufferedReader(isr2);//将控制台输入的数据放入缓存
while(true){
String xinxi=br.readLine();//把缓存的数据读出来
System.out.println("客户端说:"+xinxi);//打印出来
System.out.println("我说:");
String fasong=br2.readLine();//把缓存的数据读出来
pw.println(fasong);//传给客户端
}
}catch(Exception e){
}}
public static void main(String args[]){
L2 a=new L2();
}
}
注释比较全面,笔者就不过多解释啦
然后是客户端的代码:
package 网络聊天;
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流发送
InputStreamReader isr=new InputStreamReader(System.in);//从控制台输入数据
BufferedReader br=new BufferedReader(isr);//存入缓存区
InputStream isr2=s.getInputStream();//读取数据
BufferedReader br2=new BufferedReader(new InputStreamReader(isr2));//存到缓存区
while(true){
System.out.println("我发言: ");
String fasong=br.readLine();//获取数据
pw.println(fasong);
String jieshou=br2.readLine();
System.out.println("服务器说:"+jieshou);//输出数据
}
}catch(Exception e){
}
}
}
这样一个基本的架构我们就已经弄好啦!
然后就开始来验证我们的功能啦
首先我们运行服务器的代码,将服务器建立起来,控制台输出如下:
这个就表示已经启动成功啦
ps: 当我们运行客服端代码的时候,控制台会切换到客户端去,这个时候想看服务器的控制台点击红色箭头指示下拉箭头就可以啦!
然后我们运行客户端的代码,与其进行连接,控制台输出如下:
这个时候我们在控制台输入我们想说的话,回车,然后切换到服务器的控制台:
可以看到我们说的话已经传到服务器啦,这个时候我们再在服务器控制台输入我们想说的话,回车,然后切换到客户端的控制台:
可以看到服务器的话客户端也收到啦,这就说明我们已经成功了
好啦,这次就到这里啦,有问题可以和我留言哦!
其他博客的链接:
欢迎各位访问哦,这次就到这里啦!