- Visual C++源码
- Visual Basic源码
- C++ Builder源码
- Java源码
- Delphi源码
- C/C++源码
- PHP源码
- Perl源码
- Python源码
- Asm源码
- Pascal源码
- Borland C++源码
- Others源码
- SQL源码
- VBScript源码
- JavaScript源码
- ASP/ASPX源码
- C#源码
- Flash/ActionScript源码
- matlab源码
- PowerBuilder源码
- LabView源码
- Flex源码
- MathCAD源码
- VBA源码
- IDL源码
- Lisp/Scheme源码
- VHDL源码
- Objective-C源码
- Fortran源码
- tcl/tk源码
- QT源码
TCP.H
资源名称:watsock.zip [点击查看]
上传用户:qiye66666
上传日期:2007-01-03
资源大小:202k
文件大小:8k
源码类别:
TCP/IP协议栈
开发平台:
Visual C++
- /*
- * Waterloo TCP
- *
- * Copyright 1991, University of Waterloo
- *
- * This library is free software; you can use it or redistribute under
- * the terms of the license included in LICENSE.H.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * file LICENSE.H for more details.
- *
- * This network library was created by Erick Engelke of the University of
- * Waterloo, Waterloo, Ontario, Canada.
- *
- * Name resolution services were adapted from sources made available by
- * the National Centre for Supercomputer Applications (NCSA) and Clarkson
- * University.
- *
- */
- #ifdef OLD
- #define sock_Read sock_read
- #define sock_FastRead sock_fastread
- #define sock_Write sock_write
- #define sock_FastWrite sock_fastwrite
- #define sock_Flush sock_flush
- #define sock_FlushNext sock_flushnext
- #define sock_Puts sock_puts
- #define sock_Gets sock_gets
- #define sock_Putc sock_putc
- #define sock_Getc sock_getc
- #define sock_DataReady sock_dataready
- #define sock_Close sock_close
- #define sock_Abort sock_abort
- #define sock_Printf sock_printf
- #define sock_Scanf sock_scanf
- #define udp_Open udp_open
- #define tcp_Open tcp_open
- #define tcp_Listen tcp_listen
- #endif OLD
- /* Kernal version (major major minor minor) */
- #define WTCP_VER 0x0102
- /*
- * Typedefs and constants
- */
- #ifndef byte
- typedef unsigned char byte;
- #endif byte
- #ifndef word
- typedef unsigned int word;
- #endif word
- #ifndef longword
- typedef unsigned long longword;
- #endif longword
- typedef struct {
- byte undoc[ 4300 ];
- } tcp_Socket;
- typedef struct {
- byte undoc[ 2200 ];
- } udp_Socket;
- typedef struct sockaddr {
- word s_type;
- word s_port;
- longword s_ip;
- byte s_spares[6]; /* unused in TCP realm */
- };
- #define MAX_COOKIES 10
- #define MAX_NAMESERVERS 10
- #define TCP_MODE_BINARY 0
- #define TCP_MODE_ASCII 1
- #define UDP_MODE_CHK 0 /*default to checksum */
- #define UDP_MODE_NOCHK 2
- #define TCP_MODE_NAGLE 0 /* Nagle algorithm */
- #define TCP_MODE_NONAGLE 4
- sock_init();
- /*
- * s is the pointer to a udp or tcp socket
- */
- sock_read(void *s, byte *dp, int len );
- sock_fastread(void *s, byte *dp, int len );
- sock_write(void *s, byte *dp, int len);
- void sock_enqueue(void *s, byte *dp, int len);
- sock_fastwrite(void *s, byte *dp, int len );
- sock_flush( void *s );
- sock_flushnext( void *s);
- sock_puts( void *s, byte *dp );
- word sock_gets( void *s, byte *dp, int n );
- byte sock_putc( void *s, byte c );
- byte sock_getc( void *s );
- word sock_dataready( void *s );
- sock_close( void *s );
- sock_abort( void *s );
- sock_printf( void *s, char *format, ... );
- sock_scanf( void *s, char *format, ... );
- sock_mode( void *s, word mode ); /* see TCP_MODE_... */
- db_write( char *msg );
- dbuginit();
- /*
- * TCP or UDP specific stuff, must be used for open's and listens, but
- * sock stuff is used for everything else
- */
- int udp_open(void *s, word lport, longword ina, word port, int (*datahandler)());
- int tcp_open(void *s, word lport, longword ina, word port, int (*datahandler)());
- tcp_listen(void *s, word lport, longword ina, word port, int (*datahandler)(), word timeout);
- int tcp_established(void *s);
- char *rip( char *s );
- longword resolve( char *name);
- /*
- * less general functions
- */
- longword aton( char *text );
- int isaddr( char *text );
- tcp_cbreak( word mode );
- longword intel( longword x );
- word intel16( word x );
- /*
- * timers
- */
- void ip_timer_init( void *s , word delayseconds );
- word ip_timer_expired( void *s );
- /*
- * TCP/IP system variables - do not change these since they
- * are not necessarily the source variables, instead use
- * ip_Init function
- */
- extern longword my_ip_addr;
- extern longword sin_mask; /* eg. 0xfffffe00L */
- extern word sock_delay;
- /*
- * tcp_init/tcp_shutdown
- * - init/kill all tcp and lower services
- * - only call if you do not use sock_init
- * (NOT RECOMMENDED)
- */
- tcp_shutdown();
- tcp_Init();
- /*
- * things you probably won't need to know about
- */
- /*
- * sock_debugdump
- * - dump some socket control block parameters
- * used for testing the kernal, not recommended
- */
- sock_debugdump( void *s);
- /*
- * tcp_config - read a configuration file
- * - if special path desired, call after sock_init()
- * - null reads path from executable
- * see sock_init();
- */
- tcp_config( char *path );
- /*
- * tcp_tick - called periodically by user application in sock_wait_...
- * - returns 1 when our socket closes
- */
- tcp_tick( void *s );
- /*
- * Retransmitter - called periodically to perform tcp retransmissions
- * - normally called from tcp_tick, you have to be pretty
- * low down to use this one
- */
- tcp_Retransmitter();
- /*
- * tcp_set_debug_state - set 1 or reset 0 - depends on what I have done
- */
- tcp_set_debug_state( word x );
- extern int _last_cookie;
- extern longword _cookie[MAX_COOKIES];
- /*
- * name domain constants
- */
- extern char *def_domain;
- extern longword def_nameservers[ MAX_NAMESERVERS ];
- extern word wathndlcbrk;
- extern word watcbroke;
- /*
- * sock_wait_... macros
- */
- /*
- * sock_wait_established()
- * - waits then aborts if timeout on s connection
- * sock_wait_input()
- * - waits for received input on s
- * - may not be valid input for sock_Gets... check returned length
- * sock_tick()
- * - do tick and jump on abort
- * sock_wait_closed();
- * - discards all received data
- *
- * jump to sock_err with contents of *statusptr set to
- * 1 on closed
- * -1 on timeout
- *
- */
- int _ip_delay0( void *s, int seconds, int (*fn)(), void *statusptr );
- int _ip_delay1( void *s, int seconds, int (*fn)(), void *statusptr );
- int _ip_delay2( void *s, int seconds, int (*fn)(), void *statusptr );
- unsigned long set_timeout( unsigned int seconds );
- unsigned long set_ttimeout( unsigned int ticks );
- int chk_timeout( unsigned long timeout );
- int tcp_tick( void *s );
- #define sock_wait_established( s, seconds, fn, statusptr )
- if (_ip_delay0( s, seconds, fn, statusptr )) goto sock_err;
- #define sock_wait_input( s, seconds, fn , statusptr )
- if (_ip_delay1( s, seconds, fn, statusptr )) goto sock_err;
- #define sock_tick( s, statusptr )
- if ( !tcp_tick(s)) { if (statusptr) *statusptr = 1 ; goto sock_err; }
- #define sock_wait_closed(s, seconds, fn, statusptr )
- if (_ip_delay2( s, seconds, fn, statusptr )) goto sock_err;
- /* user initialization file */
- extern void (*usr_init)();
- void outs( char far * string );
- longword aton( char * string);
- int _ping( longword host , longword countnum );
- longword _chk_ping( longword host , longword *ptr);
- void _arp_register( longword use, longword instead_of );
- void _eth_init();
- byte *_eth_formatpacket( void *eth_dest, word eth_type );
- void _eth_send( word len);
- void _eth_free( void *buf);
- byte *_eth_arrived( word *type_ptr);
- void _eth_release();
- /* bsd-similar stuff */
- int sock_rbsize( void *s );
- int sock_rbused( void *s );
- int sock_rbleft( void *s );
- int sock_tbsize( void *s );
- int sock_tbused( void *s );
- int sock_tbleft( void *s );
- _chk_socket( tcp_Socket *s );
- char *inet_ntoa( char *s, longword x );
- char *psocket( tcp_Socket *s );
- longword inet_addr( char *s );
- char *sockerr( tcp_Socket *s );
- char *sockstate( tcp_Socket *s );
- getpeername( tcp_Socket *s, void *dest, int *len );
- getsockname( tcp_Socket *s, void *dest, int *len );
- longword gethostid();
- longword sethostid( longword ip );
- char *getdomainname( char *name, int length );
- char *setdomainname( char *string );
- char *gethostname( char *name, int length );
- char *sethostname( char *string );
- word ntohs( word a );
- word htons( word a );
- longword ntohl( longword x );
- longword htonl( longword x );
- void _arp_register( longword use, longword instead_of );
- int _arp_resolve( longword ina, void *ethap);
- extern _survivebootp;
- sock_stats( tcp_Socket *s, word *days, word *inactive, word *cwindow, word *avg, word *sd );