用C语言实现UDP 通信。写一个udp 的客户端,可以向外发送消息。再写一个udp服务端,接收客户端的消息,并且打印出来。
*事先说明:
在window和Linux中有一下结构:
struct sockaddr
{
unsigned short;
sa_family; //address family :AF_XXX
char sa_data[14]; // 14 bytes of the protocol address
}
struct sockaddr_in //在netinet/in.h 中定义:存储IP地址,使用in_addr这个数据结构
{
short sin_family; //address family:AF_XXX
unsigned short sin_port; //port number (必须采用网络数据格式,普通数字可以用htons()函数转换成网络数据格式的数字)
struct in_addr sin_addr; //ip address in nerwork byte order(internet address)
unsigned char sin_zero[8]; same size as struct sockaddr 没有实际意义,只是为了跟sockaddr结构在内存中对齐
}
typedef uint32_t, in_addr_t;
struct in_addr
{
in_addr_t;
s_addr;
}*
服务器代码如下:
#include <stdio.h>
#include <string.h>
#include <unistd.h> // for close()
#include <sys/types.h>
#include <sys/socket.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#define PORT 12347
#define MAXDATASIZE 1024
int main()
{
int sockefd; // socket descriptors
struct sockaddr_in server; //server's address information
struct sockaddr_in client; // client's address information
socklen_t sin_size;
int num, i;
char recemsg[MAXDATASIZE];
char sendmsg[MAXDATASIZE];
char condition[] = "quit";