iOS

CFSocket을 통한 로컬 서버 만들기 5

스엠 2024. 5. 2. 00:39

매우 오랜만에 써보는 iOS관한 내용.

옛날 옛적에 CFSocket을 이용한 로컬 서버 만들기 글을 포스팅 해놓고, 이제 와서야 다시 들춰보며

github에 프로젝트를 올리다가 문득 의문점이 들어서 개인 기록용으로라도 쓰게 되었다.

 

의문의 시작점은 CFStreamCreatePairWithSocket 함수를 보기 시작하면서 들게 되었다.

대충 이런식으로 되어 있는 함수인데, 글을 적극적으로 포스팅하고 있을 당시에는 저걸 Socket2개를 pairing하고 있는 것이라고 

단단히 착각하고 있었다...

근데 생각해보니 하나의 소켓에 그냥 stream만 연결하는 것 뿐이었는데, 분명 글에도 stream연결하는 놈이라고 써놓았건만 왜 오해를 하고 있었는지 모르겠다.

 

그리고 또 한가지, 코드를 다시 수기로 치면서 작성하고 있다가, 문든 acceptClientSocket이라는 함수도 생각해보니,

새로운 socket을 생성하지는 않고 기존 소켓을 가지고 무언가를 하는 거였다. 

여기도 결국은 serverSocket의 fileDescriptor를 가지고 무언가를 하는 거였는데, 도데체 왜 그 당시에는 socket이 2개라고 생각한 건지..

 

Darwin.accept의 함수 자체도 설명을 보면 다음과 같이 되어있다. 

In Swift, Darwin.accept refers to a function provided by the Darwin module, which is a part of Apple's open-source implementation of the BSD APIs on macOS, iOS, and other Apple platforms.

The accept function is used for accepting incoming connections on a socket. It typically takes parameters such as the socket file descriptor, pointers to the address structure of the client, and other parameters related to socket options.

: 대충 해석하자면, accept 함수는 socket으로 들어오는 연결을 허용하기위해 존재한다. 

이게 끝...

 

음 그때 당시에 너무 ServerSocket, ClientSocket이렇게 이분법적인 사고에 틀어박혀서 저렇게 생각한게 아닌가 싶다.

1차로 코딩이 끝나면 한번 단일 소켓을 바꾸는 리팩토링 과정을 거치는 것도 나쁘지는 않을 것 같다.