package cn.com.socket;
import java.net.*;
import java.io.*;
public class ServerMain {
public static void main(String args[]) {
try {
boolean flag = true;
Socket clientSocket = null;
String inputLine;
int c;
ServerSocket serverSocket = new ServerSocket(8018);
System.out.println("Server listen on:" + serverSocket.getLocalPort());
while(flag) {
clientSocket = serverSocket.accept(); // 接收客戶端数据
// 客戶端的数据输入流
DataInputStream is = new DataInputStream(new BufferedInputStream(clientSocket.getInputStream()));
OutputStream os = clientSocket.getOutputStream();// 服务器端的输出流
while ((inputLine = is.readLine()) != null) {
// 当客戶端输入stop命令的时候服务器程序运行終止
if (inputLine.equals("stop")) {
flag = false;
break;
} else {
System.out.println("Client Message is:" + inputLine); //显示客户端消息
while ((c = System.in.read()) != -1) {
os.write((byte)c);
if ((byte)c == '\n') {
os.flush(); // 遇到回车时將服务端信息发送到客戶端
break;
}
}
}
}
is.close();
os.close();
clientSocket.close();
}
serverSocket.close();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
package cn.com.socket;
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.OutputStream;
import java.net.Socket;
public class ClientMain {
public static void main(String args[])
{
try {
// 创建通讯并且和主机连接
Socket clientSocket = new Socket("host", 8018);
OutputStream os = clientSocket.getOutputStream();
DataInputStream is = new DataInputStream(new BufferedInputStream(clientSocket.getInputStream()));
int c;
boolean flag = true;
String responseline;
while (flag) {
// 接受输入字符并且写入系統
while ((c = System.in.read()) != -1) {
// 把输入的消息 写入输出流
os.write((byte)c);
if ((byte)c == '\n') {
os.flush();
// 將程序阻塞,直到回答信息被收到后將他們在输出上显示出来
responseline = is.readLine();
System.out.println("Server Message is:" + responseline);
}
}
}
os.close();
is.close();
clientSocket.close();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}