c언어 소켓프로그래밍 예제

void *connection_handler(보이드 *소켓_desc) { //소켓 설명자 int 양말 = *(int*)socket_desc; int read_size; 이것은 리눅스 시스템에서 c 언어로 소켓 프로그래밍에 대한 빠른 튜토리얼입니다. 여기에 표시된 코드 조각이 Windows가 아닌 Linux 시스템에서만 작동하기 때문에 “Linux”. 소켓 프로그래밍에 대한 윈도우 API는 winsock라고하고 우리는 다른 튜토리얼에서 그것을 통해 이동합니다. 함수 recv는 소켓에서 데이터를 수신하는 데 사용됩니다. 다음 예제에서는 마지막 예제와 동일한 메시지를 보내고 서버로부터 회신을 수신합니다. 따라서 위의 코드를 사용하여 도메인 이름의 IP 주소를 찾을 수 있습니다. 그런 다음 IP 주소를 사용하여 소켓을 사용하여 연결할 수 있습니다. 5. 다음으로 우리는 ipOfServer를 구조화하기 위해 생성 된 소켓을 바인딩해야합니다. 이를 위해 우리는 bind() 함수를 호출합니다. 포트, IP 주소를 세부 정보로 포함합니다. 소켓에 데이터를 보낼 때 기본적으로 해당 소켓에 데이터를 쓰고 있습니다.

이는 파일에 데이터를 작성하는 것과 유사합니다. 따라서 쓰기 함수를 사용하여 데이터를 소켓으로 보낼 수도 있습니다. 이 자습서의 대명후반부에서는 쓰기 함수를 사용하여 데이터를 전송합니다. 따라서 동일한 포트에 바인딩된 소켓이 2개 있을 수 없음이 분명해집니다. 그것은 더 간단 할 수 없습니다. 소켓을 만들고 연결합니다. 프로그램을 실행하면 연결됨이 표시됩니다. 포트 80과 다른 포트에 연결해 보면 포트가 연결에 열려 있지 않음을 나타내는 연결할 수 없습니다. 거기에 if 문을 확인합니다. “if(socket_desc = -1)”라고 말하며, 이 경우 socket_desc를 -1로 설정합니다. 변수를 설정하면 false가 아닌 rvalue가 생성되므로 if 조건이 매번 사용됩니다. if(-1 == socket_desc)” 문앞에 상수와 함께 if를 쓰는 것이 좋습니다.

하나의 등가 부호만 사용하면 컴파일 오류가 발생합니다 (상수에 값을 할당 할 수 없기 때문에) 쉽게 알아 차리고 수정할 수 있습니다. printf (“Id 양말: %in”, (소켓_desc)); if(sid = -1) { printf(“Id 양말: %in”, (socket_desc)); 반환 0; } 훌륭한 기사주셔서 감사합니다. 나는 질문이 있습니다 : 우리는 어떻게 서버가 영원히 실행되고 지속적으로 클라이언트에서 데이터를 / 수신 할 수 있습니까? 즉, 어쨌든 소켓을 닫지 않는 것이 있습니까? 파이썬에서 serve_forever ()와 비슷한 것이 있습니까? 두 번째 인수는 소켓의 유형입니다.

Posted in Uncategorized