发送消息的线程
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;
public class CilneThread implements Runnable {
private Socket socket;
public CilneThread(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
Scanner sc = new Scanner(System.in);
OutputStream os = null;
try {
while (true) {
String line = sc.nextLine();
os = socket.getOutputStream();
os.write(line.getBytes());
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (os != null) {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (socket != null) {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
接收消息的线程
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
public class SeverThread implements Runnable {
private Socket socket;
public SeverThread(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
InputStream is = null;
try {
byte[] bytes = new byte[1024];
is = socket.getInputStream();
while (true) {
int len = is.read(bytes);
System.out.println(new String(bytes, 0, len));
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
客户端
import java.io.IOException;
import java.net.Socket;
public class ClineDemo {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("192.168.89.63", 6666);
new Thread(new CilneThread(socket)).start();
new Thread(new SeverThread(socket)).start();
}
}
服务器端
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class SeverDemo {
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(6666);
Socket socket = server.accept();
new Thread(new CilneThread(socket)).start();
new Thread(new SeverThread(socket)).start();
}
}