创建一个客户端线程:
package cn.com.chat;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
/**
* 客户端线程,用于向服务端发送数据
*
* @author Administrator
*
*/
public class ClientThread extends Thread
{
Socket socket = null;
BufferedReader br = null;
PrintWriter pw = null;
public ClientThread(Socket socket)
{
this.socket = socket;
br = new BufferedReader(new InputStreamReader(System.in));
try
{
pw = new PrintWriter(socket.getOutputStream(), true);
}
catch (IOException e)
{
e.printStackTrace();
}
}
public void run()
{
try
{
while (true)
{
String str = br.readLine();// 从控制台输入
pw.println(str);// 向服务端发送数据
}
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
if (br != null)
{
try
{
br.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
if (pw != null)
{
pw.close();
}
if (socket != null)
{
try
{
socket.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
}
}
创建一个服务器线程:
package cn.com.chat;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
/**
* f服务端的线程,用来向客户端发送信息
*
* @author Administrator
*
*/
public class ServerThread extends Thread
{
Socket socket = null;
BufferedReader br = null;
PrintWriter pw = null;
public ServerThread(Socket socket)
{
this.socket = socket;
br = new BufferedReader(new InputStreamReader(System.in));
try
{
pw = new PrintWriter(socket.getOutputStream(), true);
}
catch (IOException e)
{
e.printStackTrace();
}
}
@Override
public void run()
{
try
{
while (true)
{
String str = br.readLine();// 从控制台输入
pw.println(str);// 向客户端发送信息
}
}
catch (IOException e)
{
e.printStackTrace();
}finally
{
if (pw != null)
{
pw.close();
}
if (br != null)
{
try
{
br.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
if (socket != null)
{
try
{
socket.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
}
}
客户端启动:
package cn.com.chat;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;
/**
* 客户端的主线程,用来接收服务端信息
*
* @author Administrator
*
*/
public class Client
{
public static void main(String[] args)
{
Socket socket = null;
BufferedReader br = null;
boolean flag=true;
try
{
socket = new Socket("localhost", 9002);
new ClientThread(socket).start();// 启动Client线程
br = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
// while (true)
// {
// String str = br.readLine();
// if (str.equals("bye"))
// {
// break;
// }
// System.out.println("服务端说:" + str);
//
// }
while(flag){
String str = br.readLine();
if (str.equals("bye"))
{
flag=false;
}
System.out.println("服务端说:" + str);
}
}
catch (UnknownHostException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
if (br != null)
{
try
{
br.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
if (socket != null)
{
try
{
socket.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
}
}
服务器端启动:
package cn.com.chat;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 服务器的主线程,用于接收客户端的信息
*
* @author Administrator
*
*/
public class Server
{
public static void main(String[] args)
{
ServerSocket server = null;
Socket socket = null;
BufferedReader br = null;
boolean flag=true;
try
{
server = new ServerSocket(9002);
socket = server.accept();
new ServerThread(socket).start();// 启动server线程
br = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
// String str = br.readLine();
// while (!str.equals("bye"))
// {
// System.out.println("客户端说:" + str);
// str = br.readLine();
//
// }
while(flag){
String str = br.readLine();
if(str.equals("bye")){
flag=false;
}
System.out.println("客户端说:"+str);
}
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
if (br != null)
{
try
{
br.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
if (socket != null)
{
try
{
socket.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
if (server != null)
{
try
{
server.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
}
}