Linux C UDP資料收發

2021-07-30 19:20:30 字數 1323 閱讀 7488

基於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個位元組全部...