一个很简单的网络聊天小工具,java实现,双向同步发送信息,功能增加中
局域网内ip请自行更改,只要变更client端的localhost ip为另一台pc的ip就行import java.io.*;
import java.net.Socket;
import java.net.ServerSocket;
import java.net.SocketException;
public class TestServer {
public static void main(String[] args) {
try {
//open the communication port for messenge-transfer
//server socket id:8888
ServerSocket s = new ServerSocket(8888);
//create socket instance and set it be waiting state to accept data
Socket s1 = s.accept();
//original data stream
InputStream is = s1.getInputStream();
OutputStream os = s1.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
DataInputStream dis = new DataInputStream(is);
System.out.println("Server started!");
new MyServerReader(dis).start();
new MyServerWriter(dos).start();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
class MyServerReader extends Thread {
private DataInputStream dis;
public MyServerReader(DataInputStream dis) {
this.dis = dis;
}
public void run() {
String info;
try {
while (true) {
info = dis.readUTF();
System.out.println("Ta said:" + info);
if (info.equals("bye") || info.equals("88")) {
System.out.println("Ta offline, connection's out!");
System.exit(0);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
class MyServerWriter extends Thread {
private DataOutputStream dos;
public MyServerWriter (DataOutputStream dos) {
this.dos = dos;
}
public void run() {
String info;
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
try {
while (true) {
info = br.readLine();
dos.writeUTF(info);
if (info.equals("bye") || info.equals("88")) {
System.out.println("Local machine Offline, application exit!");
System.exit(0);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
client端的:import java.io.*;
import java.net.Socket;
import java.net.SocketException;
public class TestClient {
public static void main (String[] args) {
try {
Socket s1 = new Socket("127.0.0.1", 8888);
InputStream is = s1.getInputStream();
OutputStream os = s1.getOutputStream();
DataInputStream dis = new DataInputStream(is);
DataOutputStream dos = new DataOutputStream(os);
new MyClientReader(dis).start();
new MyClientWriter(dos).start();
} catch (IOException e) {
e.printStackTrace();
}
}
}
class MyClientReader extends Thread {
private DataInputStream dis;
public MyClientReader(DataInputStream dis) {
this.dis = dis;
}
public void run() {
String info;
try {
while (true) {
info = dis.readUTF();
System.out.println("Ta said:" + info);
if (info.equals("bye") || info.equals("88")) {
System.out.println("Ta offline, connection's out!");
System.exit(0);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
class MyClientWriter extends Thread {
private DataOutputStream dos;
public MyClientWriter (DataOutputStream dos) {
this.dos = dos;
}
public void run() {
String info;
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
try {
while (true) {
info = br.readLine();
dos.writeUTF(info);
if (info.equals("bye") || info.equals("88")) {
System.out.println("Local machine Offline, application exit!");
System.exit(0);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}