/*Socket基础 UDP
* A与B发送消息
* */
#include
#include
#include
#include
#include
#include
#include
#define TASK_PRIORITY_A 130
#define TASK_PRIORITY_B 130
#define STACK_SIZE 225
#define PORT 3733
int taskId_A, taskId_B;
/*定义两个Task*/
void taskA(void);
void taskB(void);
/*服务器ip地址*/
char ip[]="127.0.0.1";
/*服务端地址与客户端地址*/
struct sockaddr_in serAddr, cliAddr;
int len=sizeof(struct sockaddr_in);
int taskDemo() {
/*创建任务:taskSpawn创建并激活任务*/
taskId_A=taskSpawn("taskA", TASK_PRIORITY_A, VX_FP_TASK, STACK_SIZE,
(FUNCPTR)taskA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
taskId_B=taskSpawn("taskB", TASK_PRIORITY_B, VX_FP_TASK, STACK_SIZE,
(FUNCPTR)taskB, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
if (taskId_A==ERROR)
printf("taskA taskSpawn() failed!\n");
if (taskId_B==ERROR)
printf("taskB taskSpawn() failed!\n");
}
/*服务端*/
void taskA() {
int sockFd, newFd, rLen;
char msg[]="hello", buf[255];
/*创建套接字*/
sockFd=socket(AF_INET,SOCK_DGRAM,0);
/****************************************************************
* 设置套接字要绑定的网络地址,通过对结构体struct sockaddr_in seraddr赋值*/
serAddr.sin_family=AF_INET;/*协议族 为ip协议族*/
serAddr.sin_port=PORT;/*端口号*/
inet_aton(ip, &(serAddr.sin_addr));/*将ip地址转为32位整数*/
memset(serAddr.sin_zero, 0, 8);
/****************************************************************/
/*socket与地址绑定*/
if (bind(sockFd, (struct sockaddr*)&serAddr, len)==OK)
printf("Connected!\n");
/*接收数据*/
recvfrom(sockFd, buf, sizeof(buf), 0, (struct sockaddr*)&cliAddr, &len);
printf("[Server]Get message:%s\n", buf);
sendto(sockFd, msg, sizeof(msg), 0, (struct sockaddr*)&cliAddr, len);
printf("[Server]Send msg to client!\n");
}
/*客户端*/
void taskB() {
int sockFd, rLen;
char buf[255], msg[]="This is client!";
/*创建socket*/
sockFd=socket(AF_INET,SOCK_DGRAM,0);
/*连接*/
sendto(sockFd, msg, sizeof(msg), 0, (struct sockaddr*)&serAddr, len);
printf("[Client]Send msg to server!\n");
recvfrom(sockFd, buf, sizeof(buf), 0, (struct sockaddr*)&serAddr, &len);
printf("[Client]Get message:%s\n", buf);
}
运行
Connected!
[Client]Send msg to server!
[Server]Get message:This is client!
[Server]Send msg to client!
[Client]Get message:hello