어떻게 c 언어 에서 socket 을 닫 습 니까?

1349 단어 csocket
c 언어 가 socket 을 닫 는 두 가지 방식
1.종료()

#include<sys/socket.h>

int shutdown(int sockfd,int how);
how 방식 은 세 가지 가 있 습 니 다.
SHUT_RD(0):sockfd 의 읽 기 기능 을 닫 습 니 다.이 옵션 은 sockfd 의 읽 기 동작 을 허용 하지 않 습 니 다.받 아들 일 수 없다.
SHUT_WR(1):sockfd 의 쓰기 기능 을 닫 습 니 다.이 옵션 을 사용 하면 sockfd 의 쓰기 동작 을 허용 하지 않 습 니 다.발송 불가.
SHUT_RDWR(2):sockfd 의 읽 기와 쓰기 기능 을 닫 습 니 다.보 내 거나 받 아들 일 수 없습니다(close()와 같 습 니 다).
성공 하면 0,오류 반환-1,오류 코드 errno:EBADF 는 sockfd 가 유효한 설명자 가 아니 라 는 것 을 표시 합 니 다.ENOTCONN 은 sockfd 가 연결 되 지 않 았 음 을 표시 합 니 다.ENOTSOCK 은 sockfd 가 socket 설명자 가 아 닌 파일 설명자 임 을 나타 낸다.
2.close()

#include<unistd.h>

int close(int fd);
읽 기와 쓰기 닫 기.그것 은 소켓 에 있 는 더 많은 데이터 의 읽 기와 쓰 기 를 방지 할 것 이다.다른 쪽 에서 소켓 을 읽 고 쓰 려 는 모든 시 도 는 잘못된 정 보 를 되 돌려 줄 것 이다.
성공 하면 0,오류 반환-1,오류 코드 errno:EBADF 는 fd 가 유효한 설명자 가 아니 라 는 것 을 표시 합 니 다.EINTR 은 close 함수 가 신호 에 의 해 중단 되 었 음 을 표시 합 니 다.EIO 는 IO 오 류 를 표시 합 니 다.
구별:
1.shutdown()은 소켓 을 어떻게 닫 는 지 에 있어 서 약간의 제어 가 있 습 니 다.shutdown 은 단 방향 으로 닫 을 수 있 습 니 다.Close 는 안 됩 니 다.
2.다 중 스 레 드 공유/같은 Socket 을 호출 할 때 Close 는 1 만 줄 이 고 0 으로 줄 여야 Socket 을 진정 으로 닫 을 수 있 습 니 다.
shutdown 은 얼마나 많은 스 레 드 가 사용 되 는 지 신경 쓰 지 않 고 socket 을 강제로 닫 습 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기