<p><pre name="code" class="java">
package scoket;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
/**
*@ClassName:Server.java
*@Description:
*@author: keweiquan
*@date:2016年6月16日 上午11:52:24
*/
public class Server
{
private static final int PORT = 9888;
private Socket socket;
public static void main(String[] args) {
Server server = new Server();
ConnectThread connect = server.new ConnectThread();
new Thread(connect).start();
}
/**
* 服务端等待连接线程
*
* @author Administrator
*
*/
class ConnectThread implements Runnable {
@Override
public void run() {
try {
System.out.println("Waiting client to connect...");
ServerSocket serverSocket = new ServerSocket(PORT);
socket = serverSocket.accept();
// socket连接之后开始启动接收与发送消息的线程
ReceiveThread receive = new ReceiveThread();
SendThread send = new SendThread();
new Thread(receive).start();
new Thread(send).start();
} catch (Exception e) {
e.printStackTrace();
} finally {
}
}
}
/**
* 服务端接收消息线程
*
* @author Administrator
*
*/
class ReceiveThread implements Runnable {
@Override
public void run() {
try {
String info;
InputStream is = socket.getInputStream();
DataInputStream dis = new DataInputStream(is);
while (true) {
info = dis.readUTF();
System.out.println("Client:" + info);
if (info.equals("bye")) {
break;
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
}
}
}
/**
* 服务端发送消息线程
*
* @author Administrator
*
*/
class SendThread implements Runnable {
@Override
public void run() {
try {
OutputStream os = socket.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
InputStreamReader isr = new InputStreamReader(System.in);
// 从键盘读入数据
BufferedReader br = new BufferedReader(isr);
String info;
while (true) {
info = br.readLine();
dos.writeUTF(info);
if (info.equals("bye")) {
break;
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
}
}
}
}
客户端
package scoket;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
/**
* @ClassName:Client.java
* @Description:
* @author: keweiquan
* @date:2016年6月16日 上午11:53:12
*/
public class Client {
private static final String IP = "localhost";
private static final int PORT = 9888;
private Socket socket;
public static void main(String[] args) {
Client client = new Client();
ConnectThread connect = client.new ConnectThread();
new Thread(connect).start();
}
/**
* 客户端连接服务端线程
*
* @author Administrator
*
*/
class ConnectThread implements Runnable {
@Override
public void run() {
try {
socket = new Socket(IP, PORT);
// socket连接之后开始启动接收与发送消息的线程
ReceiveThread receive = new ReceiveThread();
SendThread send = new SendThread();
new Thread(receive).start();
new Thread(send).start();
} catch (Exception e) {
e.printStackTrace();
} finally {
}
}
}
/**
* 客户端接收消息线程
*
* @author Administrator
*
*/
class ReceiveThread implements Runnable {
@Override
public void run() {
try {
String info;
InputStream is = socket.getInputStream();
DataInputStream dis = new DataInputStream(is);
while (true) {
info = dis.readUTF();
System.out.println("Server:" + info);
if (info.equals("bye")) {
break;
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
}
}
}
/**
* 客户端发送消息线程
*
* @author Administrator
*
*/
class SendThread implements Runnable {
@Override
public void run() {
try {
OutputStream os = socket.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
InputStreamReader isr = new InputStreamReader(System.in);
// 从键盘读入数据
BufferedReader br = new BufferedReader(isr);
String info;
while (true) {
info = br.readLine();
dos.writeUTF(info);
if (info.equals("bye")) {
break;
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
}
}
}
}