전체 글380 6.UDP 기반 서버/클라이언트 #.udp 소켓 특징 1.장점 - tcp 보다 간결한 구조로 설계되어서 상황에 따라 좋은 성능을 발휘 한다.(seq와 같이 패킷에 번호부여하는일 없음) - 프로그램 관점에서 구현이 용이하다. - 데이터 손실이 자주 발생하지는 않는다. - 신뢰성 보다 성능이 중시되는 상황에서 좋은 선택이 될 수 있다. 2.단점 - 상대방의 수신여부를 알 수 없다. - 전송도중에 데이터가 분실될 수 있다. - 신뢰할 수 없는 전송방법을 제공한다. - 데이터를 전송할 때마다 반드시 목적지의 주소 정보를 별도로 추가해야한다. (tcp 처럼 연결된 상태가 아니기 때문에.) tcp는 신뢰성 없는 ip를 기반으로 신뢰성 있는 데이터 송수신을 위해서 흐름제어를 하지만, udp는 흐름제어가 존재하지 않는다. 흐름제어 존재 유무가 tcp.. 2020. 8. 11. 5.TCP 기반 서버 클라이언트 - 2 # 앞전 포스팅에서 작성한 에코 클라이언트만 문제가 있다면? - echo_server.c while((str_len=read(clnt_sock,message,BUF_SIZE))!=0) // 클라이언트로부터 수신한 문자열이 있을때에 write(clnt_sock,message,str_len); // 그 문자열을 그대로 에코(문자열 끝 널문자는 제외!) - echo_client.c write(sock,message,strlen(message)); // 서버로 문자열(널문자 포함) 전송 str_len=read(sock,message,BUF_SIZE-1); // 서버에서 에코한 문자열 수신 #.참고 0) TCP 소켓은 "데이터의 경계가 없다. 1) 클라이언트가 서버로 문자열을 write 함수 한번을 호출하여 전달.. 2020. 8. 11. 코어 오디오 - 오디오 정보 추출 #.개요 오디오의 관점에서 볼 때 코어 오디오는 소리 자체에 대해서는 잘 모르기 때문에 하이레벨에서 다룬다. 즉 코어 오디오는 하드웨어의 구현 세부사항과 개별적인 오디오 형식의 세부사항을 추상화 한다. #.프레임워크 코어오디오는 디지털 오디오를 다루기 위한 프레임워크의 집합이다. 크게 두개로 나눌 수 있다. 1.오디오 스트림을 처리하는 오디오 엔진 2.이런 엔진에서 데이터를 넣거나, 빼는 동작이나 다른 방법으로 엔진과 소통하는 도움API #.오디오엔진의 종류 오디오 유닛 각 유닛은 하드웨어, 콜백함수 등에서 오디오 데이터 버퍼를 받고, 그 데이터에 작업을 하고, 다른 유닛으로 전달한다. 유닛은 여러 오디오 스트림을 하나의 출력으로 합성할 수 있게 하는 많은 입력과 출력을 가질 수 있다. 오디오큐 오디오큐.. 2020. 8. 6. 4.TCP 기반 서버 클라이언트 #.TCP/IP 프로토콜 스택 #.LINK 계층 이 계층은 물리적인 영역의 표준화에 대한 결과이다. 이는 가장 기본이 되는 영역으로 LAN, WAN 과 같은 네트워크 표준과 관련된 프로토콜을 정의 하는 영역이다. #.IP계층 목적지로 데이터를 전송하기 위해서 중간에 어떤 경로를 거쳐갈 것인가? 이문제를 해결하는 것이 IP 계층이고, 이 계층에서 사용하는 프로토콜이 IP 이다. IP 자체는 비 연결지향적이며 신뢰할 수 없는 프로토콜이다. 즉, 오류발생에 대한 대비가 되어 있지 않은 프로토콜이 IP이다. #.TCP/IP 계층 데이터의 전송을 위한 경로의 검색을 IP 계층에서 해결해주니, 그 경로를 기준으로 데이터를 전송만 하면 된다. TCP와 UDP계층은 이렇듯 IP 계층에서 알려준 경로 정보를 바탕으로 데.. 2020. 8. 5. ios 위변조 탐지 로직 1.앱 변조를 위한 디버깅 탐지 2.플랫폼 위변조 체크 *참고 사이트 https://aboutsc.tistory.com/218 https://www.coredump.gr/articles/ios-anti-debugging-protections-part-2/ *빌드모드 변경 https://stackoverflow.com/questions/27252898/ios-detect-if-app-is-running-from-xcode https://cinema4dr12.tistory.com/879 2020. 8. 5. 3.주소체계와 데이터 정렬 #.ip 와 port ip는 인터넷 프로토콜의 약자로 인터넷 상에서 데이터를 송수신할 목적으로 컴퓨터에게 부여하는 값이다. 반면 port 번호는 컴퓨터에게 부여하는 값이 아닌, 프로그램상에서 생성되는 소켓을 구분하기 위해 소켓에 부여되는 번호를 뜻한다. #.인터넷 주소의 종류 ip 주소는 IPv4 와 IPv6로 나뉜다. 둘의 차이점은 IP 주소 표현에 사용되는 바이트 크기에 있다. IPv4는 4바이트(32비트) 주소체계이고, IPv6는 16바이트(128비트) 주소체계이다. IPv4 기준의 4바이트 IP 주소는 네트워크 주소와 호스트(컴퓨터) 주소로 나뉘며, 주소의 형태에 따라서 A,B,C,D,E 클래스로 분류가 된다. "IP 주소 = 네트워크 주소 + 호스트 주소" 네트워크 주소란 네트워크의 구분을 위한.. 2020. 8. 5. 2.소켓의 타입과 프로토콜의 설정 #.프로토콜이란 무엇인가? 프로토콜은 컴퓨터간에 통신(대화)을 하기 위해 필요한 통신 규약, 규칙, 약속이다. #프로토콜 체계(protocol Family) #.소켓 함수 int socket(int domain, int type, int protocol); -반환 값 정상(fd >0), 실패(-1) -ERR_NO EAFNOSUPPORT : Address Family를 지원하지 않음. EMFILE : 프로세스에서 더 이상 fd 생성 불가 ENFILE : 시스템에서 더 이상 fd 생성 불가 -매개변수 domain : Address Family ( AF_INET, AF_INET6 ...) type : SOCK_STREAM(TCP), SOCK_DGRAM(UDP) protocol : IPPROTO_TCP, IPP.. 2020. 8. 4. 1.네트워크 프로그래밍과 소켓의 이해 #.네트워크 프로그래밍이란? 네트워크로 연결되어 있는 서로 다른 두 컴퓨터가 데이터를 주고 받을 수 있도록 하는 것이 네트워크 프로그래밍이다. #.그렇다면 왜 소켓이라는 표현을 사용하나? 우리는 전력망으로 부터 전기를 공급받기위해서 소켓을 꽂는다. 즉, 가전기기의 소켓은 전력망으로의 연결에 사용된다. 마차가지로 멀리 떨어져 있는 컴퓨터와 데이터를 송수신하려면 인터넷이라는 네트워크 망에 연결해야 한다. 그리고 프로그래밍에서의 소켓은 네트워크 망의 연결에 사용되는 도구다. #.전화기 비유 전화를 걸려면 전화기가 있어야하듯, 컴퓨터끼리 통신을 하려면 소켓(전화기)가 필요하다.(socket 함수로 생성) 전화기에 전화번호가 할당되는것 처럼, 소켓에도 소켓의 주소정보(ipv4, tcp, ip 주소, 포트 등..).. 2020. 8. 3. Ios push 기초 with Firebase ios push 개념 시작하기 전에 push가 어떤 원리로 작동되는지 먼저 개념과 그림을 그리고 시작해도 좋을 것 같다. 아래 포스팅에서 ios push 개념에 대해서 상황을 만들어서 설명해 놓았다. 몽실이의 ios push 개발하기 - push 개념 push 작동 원리 xcode 셋팅 푸시 인증서 생성 1. 2. 3. 4. 5. 6. 7. 8. 9. (파이어 베이스 프로젝트 생성하는 부분은 이곳 파이어베이스 문서 가이드 참고) 10. 11. ios 클라이언트 push 기능 개발 위에서 푸시 인증서 생성, 파이어베이스 푸시 서버에 인증서 셋팅이 끝났고, pod로 firebase 푸시 관련 라이브러리를 주입했다면, 이제 ios 클라이언트에서 로직을 구현할 차례다. 클라이언트 부분 개발로직 작성 순서는 아래.. 2020. 8. 1. 이전 1 ··· 35 36 37 38 39 40 41 ··· 43 다음