主页 > 开源代码  > 

Linux-计算机网络.udp

Linux-计算机网络.udp

       1.收发函数:   read()/write ()   ///通用文件读写,可以操作套接字。     recv(,0) /send(,0)      ///TCP 常用套机字读写     recvfrom()/sendto()   ///UDP 常用套接字读写

ssize_t recv(int sockfd, void *buf, size_t len,              int flags); 功能:从指定的sockfd套接字中以flags方式获取长度       为len字节的数据到指定的buff内存中。 参数:sockfd           如果服务器则是accept的返回值的新fd         如果客户端则是socket的返回值旧fd       buff 用来存储数据的本地内存,一般是数组或者       动态内存。       len 要获取的数据长度       flags 获取数据的方式,0 表示阻塞接受。

返回值:成功 表示接受的数据长度,一般小于等于len         失败  -1;

-------------------------------------------------------

练习:    客户端向服务器传输一个文件     

2.粘包:         因为tcp本身是面向字节流的,         多次的发送数据,可能会一次接收          多次的数据会粘到一起               //怎么处理:     1.加一些分割标记        1.txt\0#include<>            \n            \r\n                 2.指定发送消息的长度             3.自定义格式        struct msg       {       };               //EDID                总结:   1.客户端 服务器 模型    2.网络 + 多进程 /多线程    3.网络 + 文件 

    3.udp-c/s 模型 

client //    socket   sendto  //发送消息    ...      close

server:   socket    bind    recvfrom() //接收消息      ...   close                           ssize_t send  (int sockfd, const void *buf, size_t len, int flags);        ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,                       const struct sockaddr *dest_addr, socklen_t addrlen);        参数:           dest_addr  //要发送到的目的地址            addrlen    //dest_addr的大小                              ssize_t recv    (int sockfd, void *buf, size_t len, int flags);        ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,                         struct sockaddr *src_addr, socklen_t *addrlen);        accept //可以获得对端的地址信息                参数:          @src_addr   //源地址            @addrlen    //src_addr 大小---使用方式与accept中的addrlen使用方式一样

4.

标签:

Linux-计算机网络.udp由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Linux-计算机网络.udp