2011-07-29 5 views
0

PLC (프로그래머블 로직 컨트롤러)와 통신하려면 다음 이더넷 네트워크가 있어야합니다. 하나의 이더넷 케이블은 PC에서 이더넷 스위치로 가고 여러 개의 케이블은 스위치에서 병렬로 PLC로 연결됩니다. 모든 PLC 모듈은 다른 IP 주소를 가지며 TCP 연결을 사용하여 그들과 통신하기를 원합니다.
코드에서 IP를 제공하여 각 모듈에 대한 TCPClient 객체를 만들고 데이터를 보내기 전에 연결합니다. 각 모듈에 대해 별도의 스레드를 만들고 각 스레드는 TcpClient.GetStream()을 사용하여 해당 모듈에 데이터를 보내려고합니다. 메서드를 작성하십시오. GetStream이 각 스레드에서 호출 될 때 동일한 Stream 객체를 얻으려고합니까 (PC에서 케이블이 하나 밖에 없기 때문에) 또는 각 스레드마다 다른 Stream 객체가있을 것입니까? 서로 다르면 Stream 객체가 공유 리소스가 아니기 때문에 스레드간에 동기화 할 필요가 없습니다. 이 경우, 나는 하나의 케이블이 나가 있기 때문에 .net이 다른 Stream.Write 호출 간의 동기화를 수행한다고 가정합니다. 사실입니까? 주제에 관한 추가 정보 및 링크를 환영합니다.스트림 하나의 이더넷 케이블을 통한 다중 스레드

답변

1

다른 TcpClient 개체, 따라서 다른 스트림. 동기화가 필요하지 않습니다. 하나의 케이블에서 다중 TCP 연결을 다중화하는 것은 운영 체제에 내장 된 TCP/IP 드라이버 스택의 작업입니다. 도움을 필요가 없습니다.