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