基於udp的通訊時不可靠地,面向無連線的,傳送的資料無法確切知道對方收到沒有,通常用於對可靠性要求不高的通訊中,使用簡單,udp沒有嚴格區分server端和client端,唯一的區別是綁不繫結(bind)埠。
1,接收程式(server)
#include #include#include
#include
in.h>#include
#include
#include
#include
#define serv_port 27350
int main(int argc, char **argv)
memset(&server_addr,0,sizeof(struct
sockaddr_in));
server_addr.sin_family =af_inet;
server_addr.sin_port =htons(serv_port);
server_addr.sin_addr.s_addr =htonl(inaddr_any);
client_len = sizeof(struct
sockaddr_in);
if (bind(sock_fd, (struct sockaddr *)&server_addr, sizeof(struct sockaddr_in)) < 0
)
while (1
)
else
}close(sock_fd);
return0;
}
2,傳送程式(client)
#include #include#include
#include
in.h>#include
#include
#include
#include
int main(void
) addr->sin_family =af_inet;
addr->sin_port = htons(27353
); addr->sin_addr.s_addr = inet_addr("
172.20.10.2");
if (addr->sin_addr.s_addr ==inaddr_none)
sprintf(buff,
"%d,%d,%d,%d,%d
",1,2,3,4,5
);
while (1
)
return0;
}
Socket收發資料
client write server client read 位元組數writebyte unsignedbyte readunsignedbyte 1 writelengthstring string readstring writebyte byte readbyte 1 writeunsig...
socket資料收發
socket讀寫 tcp協議是面向流的,read和write呼叫的返回值往往小於引數指定的位元組數。對於read呼叫,如果接收緩衝區中有20位元組,請求讀100個位元組,就會返回20。對於write呼叫,如果請求寫100個位元組,而傳送緩衝區中只有20個位元組的空閒位置,那麼write會阻塞,直到把...
socket資料收發
tcp協議是面向流的,read和write呼叫的返回值往往小於引數指定的位元組數。對於read呼叫,如果接收緩衝區中有20位元組,請求讀100個位元組,就會返回20。對於write呼叫,如果請求寫100個位元組,而傳送緩衝區中只有20個位元組的空閒位置,那麼write會阻塞,直到把100個位元組全部...