我的代码出现不知道对不对,请大家看看 多多指教
CString SOCKET_COMMON_MAGIC = "SGM";
sockaddr_in serverAddr;
int nRet ;
int nEc ;
SgmHeader sgmHeader1 ;
SgmHeader sgmHeader2 ;
RplHeader rplHeader ;
WORD wVersion = MAKEWORD(1,1) ;
WSADATA wsaData ;
nRet = WSAStartup(wVersion,&wsaData) ;
serverAddr.sin_family = AF_INET;
serverAddr.sin_port = htons(m_Port);
serverAddr.sin_addr.s_addr = htonl(INADDR_ANY);
if (nRet != 0) {
WSACleanup() ;
::AfxMessageBox("Socket Load Error !",MB_OK|MB_ICONERROR);
return -1 ;
}
if (wVersion != wsaData.wVersion) {
WSACleanup() ;
::AfxMessageBox("Socket Version Not Match Error !",MB_OK|MB_ICONERROR);
return -1 ;
}
m_ListeningSocket = socket (AF_INET,SOCK_STREAM,IPPROTO_TCP) ;
if (m_ListeningSocket < 0) {
WSACleanup() ;
::AfxMessageBox("Create ListeningSocket Error !",MB_OK|MB_ICONERROR);
return -1 ;
}
nRet = bind(m_ListeningSocket,(SOCKADDR *)&serverAddr,sizeof(serverAddr));
if(nRet == SOCKET_ERROR){
closesocket(m_ListeningSocket);
WSACleanup();
::AfxMessageBox("Bind Socket Error !",MB_OK|MB_ICONERROR);
return -1;
}
listen(m_ListeningSocket,5);
char s_buff_h[100] ;
char s_buff_d[5000] ;
char s_buff[300000] ;
char s_buff_tmp[5000] ;
char s_buff_send[300000];
char s_buff_s[5000] ;
unsigned short FrameMax =1;
unsigned short FrameNum =1;
int nSize = 0 ;
int nSize_i = 0 ;
int nSize_r = 0 ;
int nSize_a = 0 ;
unsigned short nFrameCnt =1;
unsigned short nFrameMax ;
int nP = 0 ;
int sp_len ;
int nData ;
int nTemp = 0 ;
time_t ltime ;
DWORD time1,time2 ;
WORD w ;
DWORD ww ;
BOOL Frame_flg = TRUE ;
fd_set readfds ;
readfds.fd_count = 1 ;
readfds.fd_array[0] = m_ListeningSocket ;
const char FAR* optival ;
int nByte = 300000 ;
optival = (const char *)&nByte ;
setsockopt (m_ListeningSocket,SOL_SOCKET,SO_RCVBUF,optival,4) ;
u_long FAR argp ;
argp = 1 ;
ioctlsocket (m_ListeningSocket,FIONBIO,&argp) ;
while (1) {
if (select (0,&readfds,NULL,NULL,NULL) == 1) {
nSize = 48 ;
nSize_a = 0 ;
::AfxMessageBox("Received!",MB_OK|MB_ICONERROR);
//Receive the SGM Common Header
while (1) {
nRet = recv(m_ListeningSocket,&s_buff_h[nSize_a],(nSize - nSize_a),0) ;
if (nRet == 0) {
closesocket(m_ListeningSocket);
WSACleanup();
::AfxMessageBox("Receive NULL Error !",MB_OK|MB_ICONERROR);
return FALSE ;
}
if (nRet == SOCKET_ERROR) {
nEc = WSAGetLastError() ;
if (nEc != WSAEWOULDBLOCK) {
closesocket(m_ListeningSocket);
WSACleanup();
::AfxMessageBox("Block Error !",MB_OK|MB_ICONERROR);
return FALSE ;
} else {
continue ;
}
}
nSize_a += nRet ;
if (nSize_a == nSize) {
break;
}
}//End of receive SGM Common Header
.....下面还有一些处理,但是前面的处理我不知道对不对
select这样用对不对呀?