www.pudn.com > tcp-udp.rar > tcp.h


#ifndef _TCP_H_
#define _TCP_H_

/***************************************************/
//  define windows head file
/***************************************************/

#ifdef  WIN32
    #include   
    #include 
    #include 
    #include 
    #include 

    #include 
	#include 
    #include 

    #define  safe_delete(ptr)  {if ((ptr)!=NULL) delete (ptr);}
	#define	 GetTime()			GetTickCount()
	#define  ioctl		ioctlsocket

#endif

#ifdef  LINUX	
	#include  
	#include  
	#include  
	#include  
	#include  
	#include  
	#include  
	#include  
	#include  
	#include  
	#include  
	#include  
	#include  
	#include  
	
	#define   closesocket		close
	#define   SOCKADDR_IN		struct sockaddr_in  
	#define   SOCKADDR			struct sockaddr
	#define   SOCKET			int
	#define   SD_BOTH			3
	#define   SOCKET_ERROR		-1
	#define   INVALID_SOCKET	-1

//	unsigned int GetTime(void);
#endif

#ifdef  uCLINUX
	// this include head file is in uClinux-dist/uCLib/inlcude
	#include  
	#include  
	#include  
	#include  
	#include  
	#include  
	#include  
	#include  
	#include  
	#include  
	#include  
	#include   // this file was modified by li yuan in line 250, and bits/in.h is modified too
	#include  
	//#include    // disable when use uc-libc
	#include  
	
	#define   closesocket		close
	#define   SOCKADDR_IN		struct sockaddr_in  
	#define   SOCKADDR			struct sockaddr
	#define   SOCKET			int
	#define   SD_BOTH			3
	#define   SOCKET_ERROR		-1
	#define   INVALID_SOCKET	-1

	unsigned int	GetTime(void);

#endif

#define LISTEN_NUM	 10

int SockInit(void);
int SockClean(void);

/*******************************************
  TCP Server struct and fucntion
*******************************************/

struct AcceptSession
{
	fd_set   		fdset;
	
	SOCKADDR_IN		localaddr;
	SOCKADDR_IN		remoteaddr;
	
	SOCKET			sockfd;
	
	struct AcceptSession *next;
};

struct TcpServer
{
	fd_set 			fdset;
	
	SOCKADDR_IN		localaddr;
	SOCKADDR_IN		remoteaddr;
	
	SOCKET			sockfd;
	
	struct AcceptSession	*session;		
};

int CreateTcpServer(struct TcpServer *ser, unsigned short localport);
struct AcceptSession *AcceptConnect(struct TcpServer *ser, int timeout);
int RecvFromSession(struct AcceptSession *session, char *buff, int *recvlen, int timeout);
int SendToSession(struct AcceptSession *session, char *buff, int len, int timeout);
int DeleteTcpSession(struct AcceptSession *session);

/*******************************************
  TCP Client struct and fucntion
*******************************************/

struct TcpClient
{
	fd_set 			fdset;
	
	SOCKADDR_IN		localaddr;
	SOCKADDR_IN		remoteaddr;
	
	SOCKET			sockfd;
	
	unsigned int	connected;	
};

int CreateTcpClient(struct TcpClient *client, unsigned int serip, unsigned short serport, int timeout);
int DeleteTcpClient(struct TcpClient *client);

int SendToServer(struct TcpClient *client, char *buff, int len, int timeout);
int RecvFromServer(struct TcpClient *client, char *buff, int *recvlen, int timeout);

/***************************************************
	UDP server
***************************************************/

struct UdpServer
{
	fd_set	fdset;
	
	SOCKADDR_IN		localaddr;
	SOCKADDR_IN		remoteaddr;
	
	SOCKET	sockfd;
};

int CreateUdpServer(struct UdpServer*  server, unsigned short serport);
int RecvFromClient(struct UdpServer*  server, char* buff);
int SendToClient(struct UdpServer* server, char* buff, int len);
/***************************************************
	UDP client
***************************************************/

struct UdpClient
{
	fd_set	fdset;
	
	SOCKADDR_IN		serveraddr;
	SOCKADDR_IN		remoteaddr;
	
	SOCKET	sockfd;
};

int CreateUdpClient(struct UdpClient* client, unsigned int serip, unsigned short serport);
int RecvFromUdpServer(struct UdpClient*  client, char* buff);
int SendToUdpServer(struct UdpClient* client, char* buff, int len);

#endif