목록분류 전체보기 (121)
하아찡

이전에는 TCP 흐름제어를 테스트해봤는데UDP는 흐름제어가 없다고 배웠다. 그러면 흐름제어가 없을경우 어떻게 될까?일단 테스트를 해본당. 첫번째, TCP처럼 일정이상 데이터가 쌓이게되면 멈출까?TCP기준으론 서버리시브를 일정시간 멈춰두고, 클라이언트에서 일정이상 데이터를 보낼경우 더이상 데이터를 보내지 않았는데.UDP에선 서버 리시브를 일정시간 멈춰두고, 클라이언트에서 무수히 데이터를 보냈는데 멈추는 경우가 없었습니다.해당 테스트는 해보고 넘어가서 사진이 없습니다. ㅠㅠ 두번째, 데이터는 제대로 들어올까?테스트환경은 이러합니다.클라이언트쪽에서 서버측으로 데이터를 계속 보냅니다.서버측에선 클라이언트 데이터를 계속 받습니다.무수히 빠르게 데이터를 주고 받는과정에서 과연 데이터가 정상적으로 들어왔는지를 확인..

이전에는 Boundary를 확인해보고 해결방법도 생각해봤는데TCP에서 흐름을 자동으로 제어해준다? 라는게 사실 와닿지가 않음. 눈으로 볼 수 있으면 좋은데보이면 어떻게 흐름이 제어가 되고있는지도 확인을 해볼까해서 이것저것테스트하는중. 테스트 과정은 이러합니다클라이언트에서 SendBuffer 를 왕창 채워봅니다. -> 일정시간을 기다린다음 -> 서버측에서 리시브를 합니다 -> 서버측에서 리시브를 받는동안에도 클라이언트는 SendBuffer 에 왕창데이터를 채워봅니다. -> 이과정에서 클라이언트 쪽에서 Send가 멈추는지를 확인해봅니다. 위 gif를 보면 왼쪽은 클라이언트 / 오른쪽은 서버 입니다.(중간에 서버측 값이 100이상으로 변경된건 캡처를 잠시 멈췄다가 다시했습니다.)왼쪽 클라이언트가 Send를 빠..

소켓통신을 공부하다보니 TCP는 전송 순서와 손실을 보장주지만, 데이터 사이의 경계가 없다.데이터 사이의 경계가 없는게 무엇일까?내가 클라이언트에서 5Byte를 10000번을 보냈는데서버측에서 한번에 받는 리시브 버퍼가 99Byte이면 한번씩 주거니 받거니할땐 상관이 없겠지만클라이언트 쪽에서 데이터를 계속 보내고있는데 서버측에서 리시브를 하지않는경우 커널쪽 리시브 버퍼쪽에 데이터가 쌓이게 됩니다.만약 해당 데이터가 20번 반복해서 100Byte가 버퍼에 차있을경우, TCP 통신의 경우 Boundary가 없기 때문에 한개의 데이터 5Byte를 읽어오는게 아닌 99Byte를 읽어오게 됩니다.위 과정에서 데이터가 잘리게 됩니다. 테스트 과정은 0부터 9999까지 정수를 보내는 과정 일부 메모리를 캡쳐했습니다...

Volatile 예약어해당 키워드를 붙여서 작업할 경우 컴파일 과정에서 최적화를 하지 않습니다.해당 소리가 무엇이냐 아래 코드에서 확인해보겠습니다. #include int main(){ volatile int a = 5; a = 7; a = 8; a = 9;} 예를들어 위와 같은 코드가 있습니다. a변수는 volatile를 붙여서 선언했습니다.이과정에서 원래같으면 컴파일러가 최적화 과정에서 불필요한 과정인 a = 7; a = 8;를 무시하고 a = 9;코드만 사용하게 되는데, volatile를 사용한 변수는 해당 과정이 컴파일을 했을때 전부다 작동하게 합니다. 이걸 실제 디스어셈블로 확인해보면위와 같은 코드로 나타나는데 a변수를 처리하는데 있어서 불필요한 과정을 다 처리했습니다. ..
안녕하세요.C#에서 RestAPI를 사용하기위해서 저는 HttpClient를 사용했습니다.바로 본론으로 들어가서 아래와 같은 코드를 사용했습니다.public async Task ServerTime(){ try { var client = new HttpClient(); var request = new HttpRequestMessage { Method = HttpMethod.Get, RequestUri = new Uri(URL.ServerTime), Headers = { { "accept", "application/json" }, }, ..

Binance쪽에서 제공해주는 REST API를 사용해서 데이터를 받고 또는 주문하는 방식을 사용할겁니다.일단 단순하게 REST API는 내가 필요한 API 함수의 URI를 정확하게 알아야 합니다.Binance에서 제공해주는 주소가 있습니다. 추후에 작업을 하면서 URI를 정리해서 올리겠습니다. 그전까진 바이낸스에서 제공하는 홈페이지에서 찾아서 사용하셔야 합니다.https://developers.binance.com/docs/binance-spot-api-docs/rest-api#test-connectivity Rest API | Binance Open PlatformGeneral API Informationdevelopers.binance.com 그래서 자신이 사용할 URI를 찾으셨으면 해당 자원이 G..