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