안드로이드/프로그래밍

소켓 프로그래밍

에어버스 2015. 7. 18. 15:31

서버에 연결 후 지연시킨 다음에 서버에 요청해야 한다. (서버연결이 쓰레드로 진행되기 때문일듯)
18번 줄과 같이 지연을 시켜야 오류가 안남.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
boolean 서버연결() {
        conSock = new ConnectSocket(); // 쓰레드처리 안하면 오류
        if(conSock == null)
            return false;
        conSock.setDaemon(true);
        conSock.start();
        return true;
}
 
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if(!서버연결()) {
            Toast.makeText(this"서버연결 실패", Toast.LENGTH_SHORT).show();
            return;
        }
 
    try {
        Thread.sleep(200); // 서버 연결될때까지 지연시켜야 하는듯, sleep()없으면 오류남.
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
 
    boolean 종목요청() {
        _서버전송(_종목수요청코드 + " ");
        return true;
    }
}

대형데이타를 한번에 전송이 어려운 경우 끊어 블럭으로 만들어 전송하는 경우 한 블럭 전송한 다음 지연시키고 다음 블럭을 전송해야 수신측에서 안 겹침. (MFC가 서버인 경우 Sleep(400) 이 안정적, 총 전송데이타는 35KB일때)

<MFC 서버코드>
while(마지막블럭까지) {
    ...
    pClient->Send(szBuffer, lstrlen(szBuffer)); // 종목 전송
    Sleep(400);
}