📄 netsocket.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 + -