服务端代码:
import java.io.*;
import java.net.*;
class Server
{
public static void main(String[] args)
{
try
{
//创建一个服务端并设置端口
ServerSocket server=new ServerSocket(5555);
//监听客户端Socket
Socket client=server.accept();
//得到客户端的输入流
BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
//得到客户端的输出流
PrintWriter out=new PrintWriter(client.getOutputStream());
//得到服务端的输入流
BufferedReader wt=new BufferedReader(new InputStreamReader(System.in));
while(true)
{
//得到客户端消息
String client_msg=in.readLine();
//显示
System.out.println(client_msg);
//得到服务端输入内容
String server_msg=wt.readLine();
//利用客户端的输出流发送将内容发送到客户端
out.println(server_msg);
//刷新客户端
out.flush();
//如果客户端输入end 关闭客户端Socket
if(str.equals("end"))
{
client.close();
break;
}
}
}
catch (Exception x)
{
System.out.println(x.toString());
}
}
}
客户端代码:
import java.io.*;
import java.net.*;
class Client
{
static Socket server;
public static void main(String[] args)
{
try
{
//连接服务端端口创建一个客户端
server=new Socket(InetAddress.getLocalHost(),5555);
//得到服务端的输入流
BufferedReader in=new BufferedReader(new InputStreamReader(server.getInputStream()));
//得到服务端的输出流
PrintWriter out=new PrintWriter(server.getOutputStream());
//得到客户端的输入流
BufferedReader wt=new BufferedReader(new InputStreamReader(System.in));
while(true)
{
//客户端输入内容
String str=wt.readLine();
//发送到服务端
out.println(str);
//刷新服务端
out.flush();
//如果服务端端输入end 关闭服务端端Socket
if(str.equals("end"))
{
server.close();
break;
}
//显示服务端发送的内容
System.out.println(in.readLine());
}
}
catch (Exception x)
{
System.out.println(x.toString());
}
}
}
这种模式我们可以用这个图来表示:
双方都获得了对方的IO流,当输入完毕敲回车后消息就保存在了对方的Input流中并发送过去,然后对方就可以readLine()显示了
已经实现聊天的基本内容,不过尚有两个功能未实现,一个是多客户端聊天,还有就是这个程序只能是你一句我一句的发送,不能连续发送多条消息,汗~~,本人也是初学,还望高手多多指教,小弟感激不尽