클라이언트로부터의 선택 요청을 통해 수용하는 서버가 C 언어로되어 있습니다. 클라이언트에서 요청한 작업을 처리 할 수있는 스레드를 만듭니다. 이 시점까지 나는 괜찮다. 하지만 지금은 내부 소켓을 갖고 싶기 때문에 생성 된 쓰레드는 메인 쓰레드와 통신하여이를 통해 응답을 보냅니다. 모든 아이디어를 어떻게 해결할 수 있을까요?tcp와 함께 내부 소켓 및 외부 소켓
0
A
답변
1
꽤 쉽습니다. 이 용도로 사용하려는 것은 socketpair(2)
입니다. 각 스레드에 대해 한 쌍을 작성하면 완료됩니다.
0
@Guillaume이 맞습니다. 그러나 왜 모든 복잡한 과정을 겪어야하는지.
소켓을 통해 통신하는 하나의 프로그램에있는 모든 스레드와 함께 실행되는 서버가 있고 때때로 일반 소켓을 통해 통신하는 '작업자 스레드 서버'가있는 다른 컴퓨터에서 실행되는 서버를 사용하려는 경우에만이 작업을 수행합니다.
이처럼 이국적인 것을 필요로하지 않는 한, 공유 메모리 블록 (적절하게 뮤텍스로 보호 됨)으로 스레드간에 통신 할 수 있습니다. 예 : 작업 객체를 발송자 스레드에서 작업자 스레드로 전달합니다. 또한 스레드 간의 통신을 위해 데이터 직렬화 및 직렬화 해제의 복잡성을 잊어 버리십시오.
관련 문제
- 1. 유닉스 대 BSD 대 TCP와 인터넷 소켓?
- 2. EC2 내부 소켓
- 3. NSXPCConnection과 함께 소켓 사용
- 4. 소켓 대 소켓 소켓
- 5. RMI와 함께 소켓 사용
- 6. 자바 소켓 소켓 소켓 오류
- 7. 닫기 소켓/서버 소켓 구현
- 8. 내부 소켓 수신 버퍼 구현
- 9. 클라이언트 - 소켓 소켓 프로그래밍
- 10. Java : 소켓 및 웹 소켓 시작하기
- 11. 소켓 (웹 소켓), 포트 및 프로토콜
- 12. Java SSL 소켓 및 일반 소켓
- 13. Netty 웹 소켓 및 TCP 소켓
- 14. Delphi TcpClient (소켓) 및 TcpServer (소켓) 연결?
- 15. 외부 스크립트에서 웹 소켓 보호
- 16. Meteor Server를 외부 웹 소켓/소켓 IO API에 연결하는 방법?
- 17. 부스트 스레드 및 소켓
- 18. 레일 및 웹 소켓
- 19. Linux 소켓/연결
- 20. 소켓 소켓 콜백 사용하기
- 21. 개인 키가있는 소켓 소켓
- 22. 비 소켓 소켓 작업
- 23. 모노 소켓 모노 소켓
- 24. Windows 소켓 소켓 성능
- 25. Java 소켓 예외 소켓
- 26. 소켓 IO - 개별 소켓
- 27. 자바 : 소켓 대 소켓
- 28. 소켓 채우기 소켓
- 29. 파이썬 소켓 연결 소켓
- 30. Qt와 함께 winapi 소켓 사용
공유 메모리가 더 쉬운 아이디어라는 것을 알고 있지만, 불행하게도 저는이 같은 "이국적인"방식으로 작동하도록하고 싶습니다. 그래서 기ume의 방법으로 길을 찾으려고 노력할 것입니다. 고마워 btw 많이. – harry77
다릅니다. 작업 디스패치 메커니즘이 이미 소켓에 구축 된 경우 소켓을 사용하는 것이 훨씬 쉽습니다. 공유 메모리 대기열을 전환하는 경우 한 통화에서 소켓을 폴링하고 다른 대기열에서 대기열을 폴링해야합니다. 소켓을 사용하여 알림을 수행 할 수 있지만 (1 바이트 쓰기) 공유 메모리를 통해 실제 통신을 수행 할 수 있습니다. 교환되는 물건의 양에 따라 좋은 거래가 될 수 있습니다. – Guillaume