public class InOutDataService implements InitializingBean, Runnable {
@Autowired
SysIOMapper sysIOMapper;
private Logger logger = Logger.getLogger(this.getClass());
private static final int PORT = 10101;
private static ServerSocket serverSocket;
private static boolean isStartServer = false;
private static Socket client;
private static BufferedReader reader;
@Override
public void afterPropertiesSet() throws Exception {
new Thread(this).start();
}
@Override
public void run() {
while(true) {
System.out.println("------------------- start now ------------------" + DateUtils.getDateStr(DateUtils.DATETIMESHOWFORMAT));
try {
serverSocket = new ServerSocket(PORT);
client = serverSocket.accept();
} catch(IOException e) {
e.printStackTrace();
}
isStartServer = true;
while(isStartServer) {
try {
List<PlcIOData> list = null;
reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
String msg = reader.readLine();
if(msg != null) {
System.out.println(msg);
String msg1;
//這段代碼處理訊息
}
//Thread.sleep(10000);
} catch(Exception e) {
logger.error(e.getMessage());
try {
reader.close();
client.close();
serverSocket.close();
isStartServer = false;
Thread.sleep(1000);
} catch(IOException | InterruptedException e1) {
logger.error(e.getMessage());
e1.printStackTrace();
}
logger.error(e.getMessage());
e.printStackTrace();
}
}
}
}
}
uj5u.com熱心網友回復:
就是,服務程式是接收資料的,然后大概1天左右都是正常的,突然一個時間點收不到資料了,是否是代碼有問題,請各位大神賜教uj5u.com熱心網友回復:
沒弄過,是不是握手中斷了,可以再次連接嗎uj5u.com熱心網友回復:
給你提供一個可能,供參考。有網路中存在防火墻、Anti-DDOS、WAF等安全防護設備,如果它對長鏈接有限制的話,可能會強制結束掉。
uj5u.com熱心網友回復:
我只要重啟程式就馬上又有資料了
uj5u.com熱心網友回復:
客戶端是10秒發一次給我,這種限制是超時限制嗎
uj5u.com熱心網友回復:
鏈接建立過長,超過安全設備允許的時長,就可能被強制中斷。
uj5u.com熱心網友回復:
您好 我現在也遇到了這個問題 客戶端突然收不到訊息但是連接顯示正常,目前有發現原因和解決方案嗎?uj5u.com熱心網友回復:
您好 我現在也遇到了這個問題 客戶端突然收不到訊息但是連接顯示正常,目前有發現原因和解決方案嗎?
請問 解決了么 是什么原因導致的 我現在也遇到同樣的問題 謝謝!!!
uj5u.com熱心網友回復:
您好 我現在也遇到了這個問題 客戶端突然收不到訊息但是連接顯示正常,目前有發現原因和解決方案嗎?uj5u.com熱心網友回復:
樓主問題解決了嗎,今天也遇到類似的情況轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/106743.html
標籤:應用服務器
