socket封装
#include "socket_wrap.h"
#include "FreeRTOS.h"
#include "task.h"
int Socket(int domain, int type, int protocol)
{
int fd;
fd = socket(domain, type, protocol);
if(fd < 0){
printf("create socket error\r\n");
vTaskDelete(NULL);
}
return fd;
}
int Bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen)
{
int ret;
ret = bind(sockfd, addr, addrlen);
if(ret < 0){
printf("bind socket error\r\n");
vTaskDelete(NULL);
}
return ret;
}
int Listen(int sockfd, int backlog)
{
int ret;
ret = listen(sockfd, backlog);
if(ret < 0){
printf("listen socket error\r\n");
vTaskDelete(NULL);
}
return ret;
}
int Accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen){
int fd;
again:
fd = accept(sockfd, addr, addrlen);
if(fd < 0){
printf("accept socket error\r\n");
goto again;
}
return fd;
}
int Connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen)
{
int ret;
ret = connect(sockfd, addr, addrlen);
if(ret < 0){
printf("connect socket error\r\n");
close(sockfd);
}
return ret;
}
int Write(int fd,const void *buf,size_t nbytes)
{
int ret;
ret = write(fd, buf, nbytes);
if(ret < 0){
printf("Write socket error\r\n");
close(fd);
}
return ret;
}
int Read(int fd,void *buf,size_t nbyte)
{
int ret;
ret = read(fd, buf, nbyte);
if(ret == 0){
printf("read socket is close\r\n");
close(fd);
}else if(ret < 0){
printf("read socket error\r\n");
close(fd);
}
return ret;
}
int Sendto(int sockfd, const void *msg, int len, unsigned int flags, const struct sockaddr *to, int tolen)
{
int ret;
again:
ret = sendto(sockfd, msg, len, flags, to, tolen);
if(ret < 0){
printf("sendto socket error\r\n");
goto again;
}
return ret;
}
int Recvfrom(int sockfd, void *buf, int len, unsigned int flags, struct sockaddr *from, socklen_t *fromlen)
{
int ret;
again:
ret = recvfrom(sockfd, buf, len, flags, from, fromlen);
if(ret < 0){
printf("recvfrom socket error\r\n");
goto again;
}
return ret;
}