여러 IP/포트에 연결하는 응용 프로그램을 작성하려고하는데 문제가있는 것은 IP 주소가 알려지지 않아 하나의 부서에서 연결할 수 있다는 것입니다. 2 ips와 다른 부서는 8에 연결할 수 있습니다. 따라서 런타임 중에 구성 가능해야합니다. 루프 내부에서 스레드 나 포크를 사용하는 것이 좋겠지 만 어느 것이 더 나은지는 확실하지 않습니다. 나는 리눅스에서 C를 사용하고있다. 예를 들어여러 IP/포트에 대한 TCP 소켓
하나는 다음과 같이 실행할 수 있습니다 a.out의 IP1 포트 1 IP2 PORT2 IP3 PORT3 및 포트 1 IP1이의 a.out의 a.out 같은
감사
내가 볼
# 2는 프로그램을 멀티 스레드로 만듭니다. 경쟁 조건, 데이터 손상, 잠금 및 교착 상태의 흥미 진진한 세계로 여러분을 안내합니다. 이를 고려해야합니다. – ugoren
fd가 스레드간에 공유되기 때문에 그렇습니까? –
@BagDev no. 이러한 디자인에서 각 스레드는 자체 fd를 가지며 (클라이언트 연결시 accept() 스레드에 의해 전달됨) 독립적으로 작동합니다. 데드락 (deadlock) 등의 문제를 일으키려면 서버를 직접 입력해야합니다. 서버가 자체 클라이언트에서 요청/응답을하면 차단/읽기 루프가됩니다. 한 클라이언트 - 서버 스레드가 다른 fd (예 : 채팅)와 통신하기를 원하면 문제가 발생할 수 있습니다. 한 스레드의 총 오류 (예 : 와일드 포인터)가 실제로 전체 앱을 다운시킬 수는 있지만 실제로 그렇게하려면 나쁜 코드를 작성해야합니다. –