基于UDP的网络编程

  与TCP编程相比较,UDP缺少了connect()、listen()及accept()函数,这是由于UDP协议无连接的特性,不用维护TCP的连接、断开等状态。

UDP编程框图

基于UDP的网络编程

API函数

  socket(),bind()和TCP方式一样

recvfrom/recv

  原型:ssize_t recv(int s, void *buf, size_t len, int flags);

     ssize_t recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen);

  第一个参数s表示正在监听的套接字文件描述符,由socke()生成。第二个参数buf表示接收数据缓冲区,接收的数据将放在这个指针指向的内存空间。第三个参数len表示接收数据缓冲区的大小,系统根据这个值来确保接收缓冲区的安全,防止溢出。第四个参数from是指向本地的数据结构socketaddr_in的指针,接收数据时发送方的地址信息放在这个结构中。第五个参数fromlen表示第四个参数所指内容的长度。

  注:from和fromlen均为指针,注意进行取地址运算。

sendto/send

  原型:ssize_t send(int s, const void *buf, size_t len, int flags);

     ssize_t recvfrom(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen);

  第一个参数s表示正在监听的套接字文件描述符,由socke()生成。第二个参数buf表示发送数据缓冲区,发送的数据将放在这个指针指向的内存空间。第三个参数len表示发送数据缓冲区的大小。第四个参数from是指向目的主机的数据结构socketaddr_in的指针,接收数据的主机地址信息放在这个结构中。第五个参数fromlen表示第四个参数所指内容的长度。

上一篇:【Spring】28、Spring中基于Java的配置@Configuration和@Bean用法.代替xml配置文件


下一篇:hdu 1425