java之接口開發-初級篇-socket通信


socket通信實現util包類實現

public class SocketThread extends Thread {
public void run() {
while (true) {
// log4j
Logger log = (Logger) LogManager.getLogger(SocketThread.class);
// 標識服務信息
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
ServerSocket ss;// socket服務監聽對象
Socket socket;// 獲取監聽得到的結果
BufferedReader in;// 輸入流
PrintWriter out;// 輸出流
try {
// 設置監聽的端口,並實例監聽對象
ss = new ServerSocket(SocketConstants.SOCKET_PORT_NO_EC);
while (true) {

// 開始監聽,若沒有客戶端請求則線程一直停留在這里等待請求,
// 一旦就有請求,就獲取監聽到的對象
socket = ss.accept();

InputStream sis = socket.getInputStream();// socket服務獲取的輸入流

// 等待讀取狀態
// 大於零為獲取完畢
while (sis.available() <= 0)
System.out.println("inputStream is waitting...");

in = new BufferedReader(new InputStreamReader(sis));// 獲取輸入

String line = "";// 監聽到的字符串

// 讀數據
while (in.ready()) {
line += in.readLine();
}
// 記錄下獲取到的字符串流
log.warn("client request is :" + line);
out = new PrintWriter(socket.getOutputStream(), true);// 構建輸出

// 輸出
out.println("server response " + sdf.format(new Date()));
// 關閉當前請求對象
out.close();
in.close();
socket.close();
}
} catch (IOException e) {
String msg = "\n" + e.getMessage();
for (StackTraceElement ste : e.getStackTrace()) {
msg += "\n" + ste.getClassName() + "-" + ste.getFileName() + "-" + ste.getMethodName() + "-" + ste.getLineNumber();
}
log.fatal(msg);
} catch (Exception ex) {
String msg = "\n" + ex.getMessage();
for (StackTraceElement ste : ex.getStackTrace()) {
msg += "\n" + ste.getClassName() + "-" + ste.getFileName() + "-" + ste.getMethodName() + "-" + ste.getLineNumber();
}
log.fatal(msg);
}
}
}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM