⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 netsocket.h

📁 这是基于TI公司的DSP TMS320DM642而开发的TCP/UDP协议
💻 H
字号:
#ifndef NETSOCKET_
#define NETSOCKET_

#include"csl.h"   //for DSP
#include"ip.h"

/*
 * The new type to be used in all
 * instances which refer to sockets.
 */
typedef int      SOCKET;


#define TASKMAX          50
#define SOCKFRAMESIZE    1472

/*
 * Define flags to be used with the MsgeAsyncSelect() call.
 */
#define FD_READ         0x01
#define FD_WRITE        0x02
#define FD_OOB          0x04
#define FD_ACCEPT       0x08
#define FD_CONNECT      0x10
#define FD_CLOSE        0x20

/*
 * Types
 */
#define SOCK_STREAM     1               /* stream socket */
#define SOCK_DGRAM      2               /* datagram socket */
#define SOCK_RAW        3               /* raw-protocol interface */
#define SOCK_RDM        4               /* reliably-delivered message */
#define SOCK_SEQPACKET  5               /* sequenced packet stream */


/*
 * Address families.
 */
#define AF_UNSPEC       0               /* unspecified */
#define AF_UNIX         1               /* local to host (pipes, portals) */
#define AF_INET         2               /* internetwork: UDP, TCP, etc. */
#define AF_IMPLINK      3               /* arpanet imp addresses */
#define AF_PUP          4               /* pup protocols: e.g. BSP */
#define AF_CHAOS        5               /* mit CHAOS protocols */
#define AF_IPX          6               /* IPX and SPX */
#define AF_NS           6               /* XEROX NS protocols */
#define AF_ISO          7               /* ISO protocols */
#define AF_OSI          AF_ISO          /* OSI is ISO */
#define AF_ECMA         8               /* european computer manufacturers */
#define AF_DATAKIT      9               /* datakit protocols */
#define AF_CCITT        10              /* CCITT protocols, X.25 etc */
#define AF_SNA          11              /* IBM SNA */
#define AF_DECnet       12              /* DECnet */
#define AF_DLI          13              /* Direct data link interface */
#define AF_LAT          14              /* LAT */
#define AF_HYLINK       15              /* NSC Hyperchannel */
#define AF_APPLETALK    16              /* AppleTalk */
#define AF_NETBIOS      17              /* NetBios-style addresses */
#define AF_VOICEVIEW    18              /* VoiceView */
#define AF_FIREFOX      19              /* FireFox */
#define AF_UNKNOWN1     20              /* Somebody is using this! */
#define AF_BAN          21              /* Banyan */

#define AF_MAX          22

/*
 * Definitions of bits in internet address integers.
 * On subnets, the decomposition of addresses to host and net parts
 * is done according to subnet mask, not the masks here.
 */
#define INADDR_ANY              (Uint32)0x00000000
#define INADDR_LOOPBACK         0x7f000001
#define INADDR_BROADCAST        (u_long)0xffffffff
#define INADDR_NONE             0xffffffff

struct in_addr 
{
     union 
     {
         struct { Uint8  s_b1,s_b2,s_b3,s_b4; }S_un_b;
         struct { Uint16 s_w1,s_w2; } S_un_w;
         Uint32 S_addr;
     } S_un; 
#define s_addr  S_un.S_addr          /* can be used for most tcp & ip code */
#define s_host  S_un.S_un_b.s_b2     /* host on imp */
#define s_net   S_un.S_un_b.s_b1     /* network */
#define s_imp   S_un.S_un_w.s_w2     /* imp */
#define s_impno S_un.S_un_b.s_b4     /* imp # */
#define s_lh    S_un.S_un_b.s_b3    /* logical host */
};

/*
 * Socket address, internet style.
 */
struct sockaddr_in
{
     short   sin_family;
     Uint16  sin_port;
     struct  in_addr sin_addr;
     char    sin_zero[8];
};

/*
 * Structure used by kernel to store most
 * addresses.
 */
struct sockaddr 
{
     Uint16  sa_family;              /* address family */
     char    sa_data[14];            /* up to 14 bytes of direct address */
};

/*
 * Structure used by kernel 
 */
struct SOCKTASK
{
     Uint16           sin_port;
     Uint16           protocol;
     Uint32           ip_address;
     Uint32           idle_tag;
     Uint32           Msg;
     void (*fp)(void);

};


int    net_init();

int    config_ip(Uint32 IP_ADDRESS);

SOCKET accept(SOCKET s, struct sockaddr  *addr, int  *addrlen);

int bind(SOCKET s, const struct sockaddr_in  *addr, int namelen);

int listen(SOCKET s,int backlog);  

int closesocket (SOCKET s);

int connect (SOCKET s, const struct sockaddr  *name, int namelen);

int  recv (SOCKET s, char  * buf, int len, int flags);

int  recvfrom (SOCKET s, char * buf, int len, int flags, \
               struct sockaddr_in  *from, int *fromlen);
         
int  send (SOCKET s, const char * buf, int len, int flags);

int  sendto (SOCKET s, const char * buf, int len, int flags, \
                       const struct sockaddr_in  *to, int tolen);

SOCKET  socket (int af, int type, int protocol);

int MsgAsyncSelect(SOCKET s,int Message,void (*fp)(void));


#endif   /* NETSOCKET_ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -