自由聊天程序

本文介绍了一个使用Java实现的客户端与服务器之间的通信代理系统,包括客户端发送消息到服务器,服务器接收并响应消息,以及客户端从服务器接收消息的过程。系统通过Socket进行连接,并利用DataInputStream和DataOutputStream进行数据读写。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package test;

import java.io.*;
import java.net.Socket;

public class TestClient
{
	public static void main(String[] args)
	{
		try
		{
			Socket s=new Socket("localhost",8888);
			System.out.println("已经和服务器建立连接");
			DataInputStream dis=new DataInputStream(s.getInputStream());
			DataOutputStream dos=new DataOutputStream(s.getOutputStream());
			new MyClientReader(dis).start();
			new MyClientWriter(dos).start();
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
	}
	
}
class MyClientReader extends Thread
{
	private DataInputStream dis;

	public MyClientReader(DataInputStream dis)
	{
		super();
		this.dis = dis;
	}
	public void run()
	{
		String message;
		try
		{
			while(true)
			{
				message=dis.readUTF();
				System.out.println("服务端说:"+message);
				if(message.equals("88"))
				{
					System.out.println("对方已经下线,程序退出");
					System.exit(0);
				}
			}
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
	}
}
class MyClientWriter extends Thread
{
	private DataOutputStream dos;

	public MyClientWriter(DataOutputStream dos)
	{
		super();
		this.dos = dos;
	}
	public void run()
	{
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		String message;
		try
		{
    		while(true)
    		{
    			System.out.print("请输入消息:");
    			message=br.readLine();
    			dos.writeUTF(message);
    			if(message.equals("88"))
    			{
    				System.out.println("自己下线,程序退出");
    				System.exit(0);
    			}
    		}
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
	}
	
}

 

package test;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class TestServer
{
	public static void main(String[] args)
	{
		System.out.println("服务器启动成功");
		try
		{
			ServerSocket ss=new ServerSocket(8888);
			Socket s=ss.accept();
			System.out.println("已经和客户端建立连接");
			OutputStream os=s.getOutputStream();
			DataOutputStream dos=new DataOutputStream(os);
			InputStream is=s.getInputStream();
			DataInputStream dis=new DataInputStream(is);
			new MyServerReader(dis).start();
			new MyServerWriter(dos).start();
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
	}
	
}
class MyServerReader extends Thread
{
	private DataInputStream dis;

	public MyServerReader(DataInputStream dis)
	{
		super();
		this.dis = dis;
	}
	public void run()
	{
		String message;
		try
		{
			while(true)
			{
				message=dis.readUTF();
				System.out.println("客户端说:"+message);
				if(message.equals("88"))
				{
					System.out.println("对方下线,程序退出");
					System.exit(0);
				}
			}
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
	}
	
}
class MyServerWriter extends Thread
{
	private DataOutputStream dos;

	public MyServerWriter(DataOutputStream dos)
	{
		super();
		this.dos = dos;
	}
	public void run()
	{
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		String message;
		try
		{
    		while(true)
    		{
    			message=br.readLine();
    			dos.writeUTF(message);
    			if(message.equals("88"))
    			{
    				System.out.println("自己下线,程序退出");
    				System.exit(0);
    			}
    		}
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
	}
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值