最近在学习网络编程,以下代码摘抄自《精通linux c编程》,本地已经验证能跑通。
数据报套接字使用的是UDP协议,UDP协议是无连接不可靠的数据报协议。在这种通信方式中,客户不与服务器建立连接,它单单通过sendto向服务器程序发送数据报,sendto函数本身要求一个地址参数给出服务程序的地址。同样的,服务程序也不会接收来自客户的连接,它只是调用recvfrom函数,这个函数等待来自某个客户的数据,并且把接收到的数据和客户端地址一起返回调用者。
#include<sys/socket.h>
int recvfrom(int socket,void *buffer,size_t size,int flags,struct sockaddr * from,size_t * addrlen);
int sendto(int socket,void * buffer,size_t size,int flags,struct sockaddr * to,size_t addrlen);
这两个函数的前三个参数socket,buffer,size分别表示套接字描述符,指向读写缓冲区的指针以及读写的字节数。
下面附上UDP server代码:
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<stdio.h>
#define MAXMSG 1024
int main()
{
int sockfd,size,nbytes;
struct sockaddr_in addr;
char message[MAXMSG],server_msg[MAXMSG]