Server.java
package org.sunchao;
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;
/**
* Socket服务端代码
*
* @author Administrator
*
*/
public class Server {
private static final int PORT = 8888;
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 {
}
}
}
}
Client.java
package org.sunchao;
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;
/**
* Socket客户端代码
*
* @author Administrator
*
*/
public class Client {
private static final String IP = "192.168.0.107";
private static final int PORT = 8888;
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 {
}
}
}
}