一个很简单的网络聊天小工具,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();
}
}
}
以上就是双向同步聊天小程序[byjavaonlinux]实现代码的详细内容。
