#ifndef SiTCP_H
#define SiTCP_H
//#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
//#include<string>
//#include<cstring>
//#include<arpa/inet.h>
#include <Winsock2.h>
//#include<fstream>
//#include<unistd.h>
#define EINPROGRESS 115 /* Operation now in progress */
struct bcp_header{
unsigned char type;
unsigned char command;
unsigned char id;
unsigned char length;
unsigned int address;
};
char* sitcpIpAddr;
unsigned int tcpPort;
unsigned int udpPort;
int udpsock;
int tcpsock;
struct sockaddr_in tcpAddr;
// struct sockaddr_in udpAddr;
fd_set rmask, wmask, readfds;
struct timeval timeout;
//struct bcp_header sndHeader;
//unsigned char sndBuf[2048];
struct bcp_header SiTCPsndHeader;
unsigned char SiTCPsndBuf[2048];
unsigned char SiTCPsndData[256];
struct sockaddr_in SiTCPudpAddr;
void SiTCPinit();
void SiTCPclose();
int SiTCPSetIPPort(char* IpAddr, unsigned int tcp, unsigned int udp);
int SiTCPCreateUDPSock();
int SiTCPCloseUDPSock();
int SiTCPCreateTCPSock();
int SiTCPCloseTCPSock();
//int GetTCPSock(){return tcpsock;}
//int GetUDPSock(){return udpsock;}
int SiTCPGetTCPSock();
int SiTCPGetUDPSock();
void SiTCPRBCPskeleton(unsigned char type, unsigned char command, unsigned char id,
unsigned char length, unsigned int address);
int SiTCPrcvRBCP_ACK(int output);
struct bcp_header SiTCPGetsndHeader();
//bcp_header GetsndHeader() const {return sndHeader;}
#endif