www.pudn.com > uCOSII上实现的tcpip.rar > zsocket.h
#ifndef _ZSOCKET_H
#define _ZSOCKET_H
#include "zarch.h"
#include "zdef.h"
#include "znetif.h"
#define ZNET_MAX_USER 32
typedef enum
{
data_packet,
data_stream,
}protocol_t;
typedef struct _zsocket
{
s8_t _id;
znetif_t* _pnetif;
task_t _task_id;
protocol_t _proto;
u16_t _lport;
ipaddr_t _lipaddr;
u16_t _rport; /*if this is a TCP these must be set*/
ipaddr_t _ripaddr;
u8_t error; /*return error of API function*/
}zsocket_t;
/************a simplest set of a api for ZNet's user**************/
extern void zsocket_init(void);
extern s8_t zsocket(protocol_t type);
extern u8_t zbind(s8_t sid, ipaddr_t *localip, u16_t *localport);
extern u8_t zclose(s8_t sid);
extern u8_t zshutdown(s8_t sid);
extern u8_t zioctl(s8_t sid, u8_t request, u8_t *argp);
extern zsocket_t *query_zsocket(s8_t sid);
/*for TCP */
extern u8_t zsent(s8_t sid, u8_t *pdata, u16_t *data_len, u8_t flags);
extern u8_t zrecv(s8_t sid, zbuffer_t **pbuf, u8_t flags);
extern u8_t zlisten(s8_t sid);
extern s8_t zaccept(s8_t sid); /*return new remote's socket id*/
extern u8_t zconnect(s8_t sid, ipaddr_t *rip, u16_t *rport);
/*fro UDP*/
extern u8_t zrecvfrom(s8_t sid, zbuffer_t **pbuf,
ipaddr_t *rip, u16_t *rport, u8_t flags);
extern u8_t zsendto(s8_t sid, u8_t *pdata, u16_t *len,
ipaddr_t *rip, u16_t *rport);
#endif