좋은 튜토리얼. 나는 질문이 있습니다 :이 프로그램에서 우리는 서버 주소로 INADDR_ANY를 사용하고 있습니다. 내가 이것을 달성하려는 경우이 프로그램을 다시 작성하는 방법 : 1. 서버는 예를 들어 192.168.1.1:8888 및 192.168.1.2:8888 을 말할 수 있습니다 두 개의 특정 소켓에 들어야한다? MPI_Send 및 MPI_Recv 함수는 MPI 데이터 형식을 더 높은 수준에서 메시지 구조를 지정하는 수단으로 활용합니다. 예를 들어 프로세스가 한 정수를 다른 정수로 보내려면 하나의 수와 MPI_INT의 데이터 형식을 사용합니다. 다른 기본 MPI 데이터 형식은 동등한 C 데이터 형식과 함께 아래에 나열됩니다. 먼저 모든 데이터가 전송되는지 확인해야 합니다. 자세한 내용은 sendall() 함수 구현을 참조하십시오. 확신이 되면 모든 데이터를 읽을 때까지 루프에서 recv()를 호출해야합니다. 링 프로그램은 프로세스 0에서 값을 초기화하고 모든 단일 프로세스주위에 값이 전달됩니다. 프로세스 0이 마지막 프로세스에서 값을 받으면 프로그램이 종료됩니다. 프로그램에서 볼 수 있듯이 교착 상태가 발생하지 않도록 하기 위해 세심한 주의를 기울입니다.
즉, 프로세스 0은 마지막 프로세스에서 값을 받기 전에 첫 번째 송신을 완료했는지 확인합니다. 다른 모든 프로세스는 단순히 MPI_Recv (이웃 낮은 프로세스에서 수신)를 호출한 다음 MPI_Send (이웃 상위 프로세스로 값을 전송)를 호출하여 링을 따라 값을 전달합니다. MPI_보내기 및 MPI_Recv는 메시지가 전송될 때까지 차단됩니다. 따라서 인쇄기는 값이 전달되는 순서에 따라 발생해야 합니다. 5개의 프로세스를 사용하면 출력이 다음과 같아야 합니다. 그래서, 이러한 너무 결함이 있는 경우, 왜 심지어 가이드에 그들을 포함? 글쎄, 몇 가지 이유가 있지만, 가장 좋은 것은 (a) 이러한 버전은 네트워크 프로그래밍을 위해 특별히 준비되어 있으며 실제 버전보다 소화하기 쉽고 (b) 이러한 버전에는 예제가 포함되어 있다는 것입니다! 이것은 더 이해하기 시작입니까? 나는 여기에서 당신을들을 수 없습니다, 그래서 난 그냥 희망해야합니다. 우리가 “www.example.com”, 포트 3490에 소켓 연결을 만드는 예를 보자 : 당신이 원격 호스트에 SOCK_DGRAM UDP 소켓을 연결하는 경우, 당신은 보낼 () 및 recv()뿐만 아니라 sendto () 및 recvfrom()를 사용할 수 있습니다. 원한다면.