1.sendå½æ°
ssize_t send( SOCKET s, const char *buf, size_t len, int flags );
ï¼1ï¼sendå
æ¯è¾å¾
åéæ°æ®çé¿åº¦lenåå¥æ¥åsçåéç¼å²çé¿åº¦ï¼ å¦ælen大äºsçåéç¼å²åºçé¿åº¦ï¼è¯¥å½æ°è¿åSOCKET_ERRORï¼
ï¼2ï¼å¦ælenå°äºæè
çäºsçåéç¼å²åºçé¿åº¦ï¼é£ä¹sendå
æ£æ¥åè®®æ¯å¦æ£å¨åésçåéç¼å²ä¸çæ°æ®ï¼å¦ææ¯å°±çå¾
åè®®ææ°æ®åéå®ï¼å¦æåè®®è¿æ²¡æå¼å§åésçåéç¼å²ä¸çæ°æ®æè
sçåéç¼å²ä¸æ²¡ææ°æ®ï¼é£ä¹sendå°±æ¯è¾sçåéç¼å²åºçå©ä½ç©ºé´ålenï¼
ï¼3ï¼å¦ælen大äºå©ä½ç©ºé´å¤§å°ï¼sendå°±ä¸ç´çå¾
åè®®æsçåéç¼å²ä¸çæ°æ®åéå®ï¼
ï¼4ï¼å¦ælenå°äºå©ä½ç©ºé´å¤§å°ï¼sendå°±ä»
ä»
æbufä¸çæ°æ®copyå°å©ä½ç©ºé´éï¼æ³¨æ并ä¸æ¯sendæsçåéç¼å²ä¸çæ°æ®ä¼ å°è¿æ¥çå¦ä¸ç«¯çï¼èæ¯åè®®ä¼ éçï¼sendä»
ä»
æ¯æbufä¸çæ°æ®copyå°sçåéç¼å²åºçå©ä½ç©ºé´éï¼ã
注æï¼
ï¼1ï¼å¦æsendå½æ°copyæ°æ®æåï¼å°±è¿åå®é
copyçåèæ°ï¼å¦æsendå¨copyæ°æ®æ¶åºç°é误ï¼é£ä¹sendå°±è¿åSOCKET_ERRORï¼å¦æsendå¨çå¾
åè®®ä¼ éæ°æ®æ¶ç½ç»æå¼çè¯ï¼é£ä¹sendå½æ°ä¹è¿åSOCKET_ERRORã
ï¼2ï¼è¦æ³¨æsendå½æ°æbufä¸çæ°æ®æåcopyå°sçåéç¼å²çå©ä½ç©ºé´éåå®å°±è¿åäºï¼ä½æ¯æ¤æ¶è¿äºæ°æ®å¹¶ä¸ä¸å®é©¬ä¸è¢«ä¼ å°è¿æ¥çå¦ä¸ç«¯ãå¦æåè®®å¨åç»çä¼ éè¿ç¨ä¸åºç°ç½ç»é误çè¯ï¼é£ä¹ä¸ä¸ä¸ªSocketå½æ°å°±ä¼è¿åSOCKET_ERRORãï¼æ¯ä¸ä¸ªé¤sendå¤çSocketå½æ°å¨æ§è¡çæå¼å§æ»è¦å
çå¾
å¥æ¥åçåéç¼å²ä¸çæ°æ®è¢«åè®®ä¼ éå®æ¯æè½ç»§ç»ï¼å¦æå¨çå¾
æ¶åºç°ç½ç»é误ï¼é£ä¹è¯¥Socketå½æ°å°±è¿å SOCKET_ERRORï¼
ï¼3ï¼å¨Unixç³»ç»ä¸ï¼å¦æsendå¨çå¾
åè®®ä¼ éæ°æ®æ¶ç½ç»æå¼çè¯ï¼è°ç¨sendçè¿ç¨ä¼æ¥æ¶å°ä¸ä¸ªSIGPIPEä¿¡å·ï¼è¿ç¨å¯¹è¯¥ä¿¡å·çé»è®¤å¤çæ¯è¿ç¨ç»æ¢ã
2.recvå½æ°
ssize_t recv(int s, char *buf, size_t len, int flags);
ï¼1ï¼recvå
çå¾
sçåéç¼å²ä¸çæ°æ®è¢«åè®®ä¼ éå®æ¯ï¼å¦æåè®®å¨ä¼ ésçåéç¼å²
ä¸çæ°æ®æ¶åºç°ç½ç»é误ï¼é£ä¹recvå½æ°è¿åSOCKET_ERRORã
ï¼2ï¼å¦æsçåéç¼å²ä¸æ²¡ææ°æ®æè
æ°æ®è¢«åè®®æååéå®æ¯åï¼recvå
æ£æ¥å¥æ¥åsçæ¥æ¶ç¼å²åºï¼å¦æsæ¥æ¶ç¼å²åºä¸æ²¡ææ°æ®æè
åè®®æ£å¨æ¥æ¶æ° æ®ï¼é£ä¹recvå°±ä¸ç´çå¾
ï¼ç´å°åè®®ææ°æ®æ¥æ¶å®æ¯ãå½åè®®ææ°æ®æ¥æ¶å®æ¯ï¼recvå½æ°å°±æsçæ¥æ¶ç¼å²ä¸çæ°æ®copyå°bufä¸ãï¼æ³¨æï¼åè®®æ¥æ¶å°çæ°æ®å¯è½å¤§äºbufçé¿åº¦ï¼æ以 å¨è¿ç§æ
åµä¸è¦è°ç¨å 次recvå½æ°æè½æsçæ¥æ¶ç¼å²ä¸çæ°æ®copyå®ãrecvå½æ°ä»
ä»
æ¯copyæ°æ®ï¼çæ£çæ¥æ¶æ°æ®æ¯åè®®æ¥å®æçï¼
ï¼3ï¼recvå½æ°è¿åå
¶å®é
copyçåèæ°ãå¦ærecvå¨copyæ¶åºéï¼é£ä¹å®è¿åSOCKET_ERRORï¼å¦ærecvå½æ°å¨çå¾
åè®®æ¥æ¶æ°æ®æ¶ç½ç»ä¸æäºï¼é£ä¹å®è¿å0ã
注æï¼å¨Unixç³»ç»ä¸ï¼å¦ærecvå½æ°å¨çå¾
åè®®æ¥æ¶æ°æ®æ¶ç½ç»æå¼äºï¼é£ä¹è°ç¨recvçè¿ç¨ä¼æ¥æ¶å°ä¸ä¸ªSIGPIPEä¿¡å·ï¼è¿ç¨å¯¹è¯¥ä¿¡å·çé»è®¤å¤çæ¯è¿ç¨ç»æ¢ã
Q&Aï¼
ï¼1ï¼ä¸¤æ¬¡sendä¸æ¬¡recvä¼åçä»ä¹ï¼
ä¸æ¬¡æ§è¯»å两次sendçå
容ã
ï¼2ï¼recvä¹åï¼æ¥æ¶ç¼å²åºä¼è¢«æ¸
空åï¼
æ¯çã
温馨提示:内容为网友见解,仅供参考