단일 사례 모델 에 대하 여 논 하 다.
예전 에 개 발 된 디자인 모델 은 가장 간단 한 단일 모델 이라도 거의 사용 되 지 않 았 다.
회사 에 서 는 socket 클 라 이언 트 의 긴 연결 을 실현 하고 자동 재 연결 을 실현 하 는 프로젝트 가 있 습 니 다.긴 연결 이 라면 클 라 이언 트 포트 가 변 하지 않 을 것 이 라 고 생각 합 니 다.연결 포트 가 필요 합 니 다.동시에 5 초 에 한 번 도 심장 박동 을 하지 않 아야 한다.대상 이 연결 되 어 있 기 때문에 새로운 채널 을 다시 만 들 수 없습니다.당시 첫 반응 은 단 례 였 다.다른 더 좋 은 방법 이 있 을 거 예요.기술 에 한계 가 있다.그렇게 많은 것 은 말 하지 않 고 핵심 코드 를 달 아 라.좋 지 않 은 곳 을 가르쳐 주 십시오.모두 에 게 뿌리 지 마 세 요!
private static MySocketClient mySocketClient;
private Selector selector;
private SocketChannel sc ;
private MySocketClient(String ip,int port){
try {
this.init(ip, port);
} catch (Exception e) {
e.printStackTrace();
}
}
public static MySocketClient getInstance(String ip,int port){
if(mySocketClient == null){
mySocketClient = new MySocketClient(ip,port);
}
return mySocketClient;
}
public void init(String ip,int port) throws Exception{
try {
selector = Selector.open();
sc = SocketChannel.open();
sc.socket().bind(new InetSocketAddress(Config.getLocalhostPort()));
boolean b = sc.connect(new InetSocketAddress(InetAddress.getByName(ip), port));
System.out.println(" : "+b);
sc.configureBlocking(false);
sc.register(selector, SelectionKey.OP_READ);
new Thread(new Listener(selector)).start();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void sendMessage(String msg){
try {
sc.write(ByteBuffer.wrap(msg.getBytes("gbk")));
} catch (IOException e) {
try {
sc.close();
mySocketClient = null;
} catch (IOException e1) {
e1.printStackTrace();
}
e.printStackTrace();
}
}
Timer timer = new Timer();
timer.schedule(new MyTask(), 1000*2, 1000*20);
public class MyTask extends TimerTask {
@Override
public void run() {
MySocketClient myc = MySocketClient.getInstance(Config.getHostIp(), Config.getHostPort());
myc.sendMessage("$PX\r
");
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.