半關閉:斷開連線的一部分,可以傳輸資料但是無法接收,或可以接收資料但無法傳輸。
closesocket()函式會同時斷開輸入及輸出流。
sd_receive:斷開輸入流
sd_send:斷開輸出流
sd_both:同時斷開i/o流
shutdown()函式,關閉輸出流時,既傳送了eof,還保留了輸入流。
recv()函式在收到eof時,返回值為0。
伺服器端:
#include "stdafx.h"
#include
#include
#include
using
namespace::std;
#define buf_size 1024
void errorhanding(char * message);
void main()
send(hclntsock, (char*)&buf, buf_size, 0);//檔案大小大於buf_size
}//半關閉
shutdown(hclntsock, sd_send);
recv(hclntsock, (char*)buf, buf_size, 0);
printf("message from client : %s\n", buf);
//完全關閉
fclose(fp);
closesocket(hclntsock);
closesocket(hservsock);
wsacleanup();
return ;
}void errorhanding(char * message)
客戶端:
// tcpclient.cpp : 定義控制台應用程式的入口點。
#include "stdafx.h"
#include
#include
#include
using
namespace::std;
#define buf_size 1024
void errorhanding(char * message);
void main()
puts("received file data");
send(hsock, "thank you", 10, 0);
fclose(fp);
closesocket(hsock);
wsacleanup();
return;
}void errorhanding(char * message)
Linux網路程式設計讀書筆記 7
第九章高階套接字函式程式設計 9.1 傳送和接收函式的高階用法 標頭檔案 int send int sockfd,void buf,int len,int flags flags msg oob,msg dontwait,msg dontroute int recv int sockfd,void ...
TCP IP高效程式設計》讀書筆記
技巧6 tcp是一種流協議 tcp是乙個流協議,跟流水一樣,是沒有邊界的,也就是說如果b端第一次傳送100個位元組,第二次傳送200個位元組,當我們讀取的時候,是根據緩衝區的大小來看讀取結果的,如果我們緩衝區大於300,那麼將會把全部讀取出來,如果小於300,例如150,則會讀取第乙個和第二個的50...
網路協議讀書筆記TCP IP分層
網路協議讀書筆記tcp ip分層 1 雖然tcp使用不可靠的ip服務,但它卻提供一種可靠的傳輸層服務 2 udp為應用程式傳送和接受資料報,乙個資料報是從傳送方傳輸到接收方的乙個資訊單元 傳送方指定的一定位元組數的資訊 但是與tcp不同的,udp是不可靠的,它不能保證資料報能安全無誤的到達目的。3 ...