您的位置:首页 > 编程语言 > Java开发

[Java] Socket/ServerSocket 控制台简单聊天程序

2011-04-19 14:16 741 查看
//服务器端代码
import java.io.*;
import java.net.Socket;
import java.net.ServerSocket;
import java.net.SocketException;

public class ServerTest{
public static void main(String[] args){
try{
ServerSocket s = new ServerSocket(8888);
Socket s1 = s.accept(); //s1是服务器和客户端共有的

OutputStream os = s1.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);

InputStream is = s1.getInputStream();
DataInputStream dis = new DataInputStream(is);

InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String info;
while(true){
info = dis.readUTF();
System.out.println("客户说:"+ info);
if(info.equals("bye")){
break;
}
System.out.print("服务器说:");
info = br.readLine();
dos.writeUTF(info);
if(info.equals("bye")){
break;
}
}
dis.close();
dos.close();
s1.close();
s.close();
}
catch(SocketException e){
System.out.println("网络不正常,退出");
}
catch(IOException e){
e.printStackTrace();
}
}
}
//客户端代码
import java.io.*;
import java.net.Socket;
import java.net.ServerSocket;
import java.net.SocketException;

public class ClientTest{
public static void main(String[] args){
try{
Socket s1 = new Socket("localhost",8888);

InputStream is = s1.getInputStream();
DataInputStream dis = new DataInputStream(is);

OutputStream os = s1.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);

InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);

String info;
while(true){
System.out.print("客户说:");
info = br.readLine();
dos.writeUTF(info);
if(info.equals("bye")){
break;
}
info = dis.readUTF();
System.out.println("服务器说:"+info);

if(info.equals("bye")){
break;
}
}
dis.close();
dos.close();
s1.close();
}
catch(SocketException e){
System.out.println("网络不正常,退出");
}
catch(IOException e){
e.printStackTrace();
}
}
}

先在控制台运行服务器程序, 然后在另一个控制台中运行客户端程序先从客户端发送消息, 一人发送一句.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐