在上一篇博客里面已经提到过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){
			 
		 }
	 }
}

这样一个基本的架构我们就已经弄好啦!

然后就开始来验证我们的功能啦

首先我们运行服务器的代码,将服务器建立起来,控制台输出如下:

java利用Socket在控制台互发信息

这个就表示已经启动成功啦

ps: 当我们运行客服端代码的时候,控制台会切换到客户端去,这个时候想看服务器的控制台点击红色箭头指示下拉箭头就可以啦!

然后我们运行客户端的代码,与其进行连接,控制台输出如下:

java利用Socket在控制台互发信息

这个时候我们在控制台输入我们想说的话,回车,然后切换到服务器的控制台:

java利用Socket在控制台互发信息

java利用Socket在控制台互发信息

可以看到我们说的话已经传到服务器啦,这个时候我们再在服务器控制台输入我们想说的话,回车,然后切换到客户端的控制台:

java利用Socket在控制台互发信息

java利用Socket在控制台互发信息

可以看到服务器的话客户端也收到啦,这就说明我们已经成功了

好啦,这次就到这里啦,有问题可以和我留言哦!

邮箱:[email protected]

其他博客的链接:

Github个人网站      知乎      简书

欢迎各位访问哦,这次就到这里啦!

相关文章:

  • 2022-12-23
  • 2021-12-11
  • 2022-12-23
  • 2021-06-04
  • 2021-05-25
  • 2022-12-23
  • 2022-12-23
  • 2021-05-25
猜你喜欢
  • 2022-12-23
  • 2021-06-03
  • 2021-04-26
  • 2021-09-24
  • 2022-01-01
  • 2021-12-06
  • 2021-07-01
相关资源
相似解决方案