A. java socket 重連問題
while ((length = in.read(b)) > 0) {
兩邊都按行處理,發送端按行發、接收端按行接收並處理,這樣會好很多。
} catch (Exception e) {
另外回,異常有可能是對方引起,如對答方服務停止,,,,這樣程序中就成了列循環了。
B. java資料庫自動重連
連接資料庫的話不是有個返回值么,如果返回記錄的話rs.next!=null
如果沒有返回記錄rs.next==null
然後你就內用rs.next判斷
if(rs.next==null)
{
//此處寫方容法等待五秒重新連接調用這個類
}
else
{
//接受資料庫穿出來的值
}
上面如果不行
就寫個try catch語句:
try
{
//連接資料庫
}
catch(...)
{
//如果有異常,說明資料庫還沒有啟動
//等待五秒重新連接調用這個類
}
C. elasticsearch中,如何與java中TransportClient在斷開後自動重連
不建議使用TransportClient,因為es官方自己都放棄了。建議使用java自身的http客戶端,使用rest api進行操作即可。不存在斷開重連,只存在api失敗重試。
D. java中怎麼處理連接復位呀
記錄最後一次成功獲取數據的時間,如果距離當前時間超過了最大允許的時間間隔,人工斷開連接,然後再重連
E. java通過ssh連接linux怎麼設置超時
以下均針簡讓李對redhat6.5系統進行說明。
一、設置ssh超時斷連
使用root用戶,編輯/etc/profile文件,在
HOSTNAME='/bin/hostname'
HISTIZE=30
後增加一行
TMOUT=300
其中,300表示超過300秒無操作即斷開連接。
設置好之後攔遲,所有新建的連接超過5分鍾沒有操作即斷開(當前連接需要斷開重連才會生效)。
二、如果滑如已設置了超時斷連,如何配置以盡量保持連接:
修改server端的/etc/ssh/sshd_config文件:
ClientAliveInterval 60 #server每隔60秒發送一次請求給client,然後client響應,從而保持連接
ClientAliveCountMax 3 #server發出請求後,客戶端沒有響應得次數達到3,就自動斷開連接,正常情況下,client不會不響應。
F. java socket如果服務端掉線 客戶端應該怎樣重連,實現的思路是怎麼樣的,最好能有具體的代碼參考一下
看代碼,不明白的追問
// 無窮循環,用於自動重新連接網關
while (true) {
// 捕獲sleep異常
try {
// 捕獲socket異常
try {
// 創建socket連接
socketGateway = new Socket("127.0.0.1", 8888);
// 創建輸入輸出對象
inStream = new DataInputStream(socketGateway.getInputStream());
outStream = new DataOutputStream(socketGateway.getOutputStream());
byte buf[] = new byte[1]; // 數據緩沖區
int intLen; // 讀緩沖區返回的長度
// 無窮循環,用於讀緩沖區數據
while (true) {
// 捕獲讀緩沖區異常
try {
intLen = inStream.read(buf, 0, 1);
// 可讀長度-1則斷開連接
if (intLen == -1) {
break;
}
// 處理buf
}
// 連接斷開
catch (EOFException e) {
break;
}
// 接收數據超時
catch (SocketTimeoutException e) {
break;
}
// 超過數據包末尾
catch (IOException e) {
break;
}
}
} catch (Exception e) {
// 處理socket錯誤
}
// 休眠1秒後重連
sleep(1000);
} catch (Exception e) {
// 處理sleep錯誤
}
}
G. java socket客戶端上傳文件過程中斷線,客戶端重連,並且服務端繼續接收數據
思路,一邊發數據,一邊寫數據到文件里保存下來,下次重連的時候就讀取文件,繼續寫