//---------------------------------------------------------------------------
#include
#pragma hdrstop #include "UDPbyAMU.h" //---------------------------------------------------------------------------
int UDPbyAMU::SockInit()
{
int err;
err=WSAStartup((WORD)(VERSION),&wsadata);
if(err!=0)
{
Application->MessageBox("System does not support Winsock version 1.1",
"Error!!",MB_OK);
return err;
}
UDP_Sock=socket(AF_INET,SOCK_DGRAM,0);
if(UDP_Sock==INVALID_SOCKET)
{
Application->MessageBox("Cannot open socket","Error!!",MB_OK);
err=WSAGetLastError();
return err;
}
return 0;
}
//---------------------------------------------------------------------------
int UDPbyAMU::SockBind(int port)
{
int err;
localAddr.sin_family=AF_INET;
localAddr.sin_port=htons(port);
localAddr.sin_addr.s_addr=INADDR_ANY;
err=bind(UDP_Sock,(SOCKADDR *)&localAddr,sizeof(SOCKADDR_IN));
if(err!=0)
{
Application->MessageBox("Cannot bind socket","Error!!",MB_OK);
err=WSAGetLastError();
return err;
}
return 0;
}
//---------------------------------------------------------------------------
void UDPbyAMU::FillSock(SOCKADDR_IN destAddr)
{
remoteAddr.sin_family=AF_INET;
remoteAddr.sin_port=destAddr.sin_port;
remoteAddr.sin_addr.s_addr=destAddr.sin_addr.s_addr;
}
//---------------------------------------------------------------------------
int UDPbyAMU::UDPSend(char* buff,int size)
{
int leng;
int addrSize=sizeof(remoteAddr);
leng=sendto(UDP_Sock,(char FAR *)buff,size,0,
(struct sockaddr*) &remoteAddr,addrSize);
return leng;
}
//---------------------------------------------------------------------------
int UDPbyAMU::UDPRecv(char* buff)
{
int leng;
int addrSize=sizeof(remoteAddr);
leng=recvfrom(UDP_Sock,(char FAR *)buff,BUFFER_SIZE,0,
(struct sockaddr*) &remoteAddr,&addrSize);
return leng;
}
//---------------------------------------------------------------------------
int UDPbyAMU::CloseSock()
{
int err;
err=closesocket(UDP_Sock);
if(err!=0)
{
Application->MessageBox("Cannot close socket","Error!!",MB_OK);
err=WSAGetLastError();
return err;
}
return 0;
}
//---------------------------------------------------------------------------
void UDPbyAMU::EndUDPbyAMU()
{
WSACleanup();
}
//---------------------------------------------------------------------------
#pragma package(smart_init) 因為這個程式並不是我寫的 可是我又必須講它結合進我的專題...所以可以告訴我它主要的用意嗎??
我只知道她跟網路有關係而以但是不知道細節~~THX大家