基于java socket的简单通信系统
版本一 单客户端单服务器通信
服务端代码:
public class ServerDemo {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("Server started with port number 8888...");
while (true) {
Socket socket = serverSocket.accept();
System.out.println("有新客户端接入。。。");
Boolean isOff = false;
new Thread(new Runnable() {
Socket s;
Boolean isOff;
Runnable setSocket(Socket s,Boolean isOff) {
this.s = s;
this.isOff = isOff;
return this;
}
@Override
public void run() {
InputStream inputStream;
try {
inputStream = s.getInputStream();
try(BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))){
String line;
while (!isOff && (line = reader.readLine()) != null) {
System.out.println("client:"+ line);
}
}
} catch (Exception e) {
System.out.println("server 已退出通信!");
} finally {
if(s != null){
try {
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}.setSocket(socket,isOff)).start();
new Thread(new Runnable() {
Socket s;
Boolean isOff;
Runnable setSocket(Socket s,Boolean isOff) {
this.s = s;
this.isOff = isOff;
return this;
}
@Override
public void run() {
Scanner scanner = new Scanner(System.in);
String line;
OutputStream outputStream = null;
try {
outputStream = s.getOutputStream();
} catch (IOException e) {
e.printStackTrace();
}
try (BufferedOutputStream writer = new BufferedOutputStream(outputStream)) {
while (!isOff && !(line = scanner.nextLine()).equals("exit") ) {
line += "\n";
writer.write(line.getBytes(StandardCharsets.UTF_8));
writer.flush();
}
writer.write("\nGoodbye! client!".getBytes(StandardCharsets.UTF_8));
writer.flush();
isOff = true;
} catch (IOException e) {
System.out.println("server 已退出通信!");
} finally {
if(s != null){
try {
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}.setSocket(socket,isOff)).start();
}
}
}
客户端代码:
public class ClientDemo {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("127.0.0.1",8888);
Boolean isOff = false;
System.out.println("Server connected successfully...");
new Thread(new Runnable() {
Socket s;
Boolean isOff;
Runnable setSocket(Socket s,Boolean isOff) {
this.s = s;
this.isOff = isOff;
return this;
}
@Override
public void run() {
Scanner scanner = new Scanner(System.in);
String line;
OutputStream outputStream;
try {
outputStream = s.getOutputStream();
try (BufferedOutputStream writer = new BufferedOutputStream(outputStream)) {
while (!(line = scanner.nextLine()).equals("exit")) {
line += "\n";
writer.write(line.getBytes(StandardCharsets.UTF_8));
writer.flush();
}
writer.write("\nGoodbye! server!".getBytes(StandardCharsets.UTF_8));
writer.flush();
isOff = true;
} catch (Exception e) {
System.out.println("client 已退出通信!");
}finally {
if(s != null){
try {
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}catch (Exception e) {
System.out.println("client 已退出通信!");
}
}
}.setSocket(socket,isOff)).start();
new Thread(new Runnable() {
Socket s;
Boolean isOff;
Runnable setSocket(Socket s,Boolean isOff) {
this.s = s;
this.isOff = isOff;
return this;
}
@Override
public void run() {
InputStream inputStream;
try {
inputStream = socket.getInputStream();
try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream))) {
String line;
while ((line = bufferedReader.readLine()) != null && !isOff){
System.out.println("server:"+line);
}
}
} catch (IOException e) {
System.out.println("通信已经关闭了!");
}
}
}.setSocket(socket,isOff)).start();
}
}
server端运行示例如下:
- client端运行示例如下:
还没有评论,来说两句吧...