?? cb_socket.cpp
字號:
/*
* Copyright (c) 2004,哈爾濱馳博電子公司
* All rights reserved.
*
* 文件名稱:CB_Socket.h
* 文件標識:
* 摘 要:連接、數據傳輸
*
* 當前版本:1.1
* 作 者:Sam
* 完成日期:2004年10月14日
*
* 取代版本:1.0
* 原作者 :Sam
* 完成日期:2004年08月10日
*/
#include <sys/timeb.h>
#include <sys/types.h>
#include <stdlib.h>
#include <sys/io.h>
#include <unistd.h>
#include "CB_Socket.h"
#include "CB_Tools.h"
#include "Afx.h"
//##ModelId=40B2E55C0352
int CB_Socket::initiaze()
{
bzero(&m_addr, sizeof(m_addr));
m_addr.sin_family = AF_INET;
m_addr.sin_port = htons(m_port);
m_addr.sin_addr.s_addr = inet_addr(m_ip);
getConnect();
}
//##ModelId=40B2E74803E5
int CB_Socket::getConnect()
{
int i = 0;
for ( ;; )
{
if (connect(m_connect, (struct sockaddr*)&m_addr, sizeof(m_addr)) <0)
{
perror ("connect error");
printf ("try connect:%d\n",i);
//return -4;
}
else
{
i = 0;
break;
}
}
return m_connect;
}
//##ModelId=40B2E800030E
int CB_Socket::sendData(char *data, char *rtn)
{
int iOptVal;
socklen_t iOptLen = sizeof(int);
if( getsockopt(m_connect, SOL_SOCKET, SO_TYPE, &iOptVal, &iOptLen) <0)
{
// printf("%d\n",iOptVal);
getConnect();
}
int iDataLen;
int len;
;
iDataLen = strlen(data);
for (int i=0; i<2; i++)
{
printf("%d\n",m_connect);
len = write(m_connect, data, iDataLen);
/*
printf("%d\n",len);
if (len <0 )
{
close(m_connect);
getConnect();
}
else*/
if (len != iDataLen)
{
return -1;
}
else
{
break;
}
}
if (rtn != NULL)
{
char *pszBuf = new char[80];
memset(pszBuf, '\0', 80);
pszBuf[80] = '\0';
if (recv (getConnect(), pszBuf, 80, 0) == -1)
{
perror ("rev error.");
return -1;
}
strcpy (rtn, pszBuf);
delete pszBuf;
}
return 0;
}
//##ModelId=40B2E8AF0201
int CB_Socket::send(char *data, char *rtn)
{
if (sendData (data, rtn) == 0)
{
struct timeb tp;
ftime (&tp);
FILE *fProcess;
char *fileName;
fProcess = fopen ("/gasclient/dat/process.dest", "w+");
if (fProcess == NULL)
{
cb_restart (true);
}
else
{
char buf[20];
memset (buf, '\0', 20);
buf[20] = '\0';
sprintf (buf, "%d", tp.time);
fwrite (&buf, 20, 1, fProcess);
fclose (fProcess);
}
return 0;
}
return -1;
}
//##ModelId=40B2F4DF0077
CB_Socket::~CB_Socket()
{
//shutdown(m_connect,2);
//close(m_connect);
}
//##ModelId=40D298900066
int CB_Socket::m_port;
//##ModelId=40D298CD01E0
char *CB_Socket::m_ip;
//##ModelId=4101BA87033C
time_t CB_Socket::m_time_out = 0;
time_t CB_Socket::m_timeStamp = 0;
//##ModelId=416E0D95034B
int CB_Socket::m_connect_count = 3;
int CB_Socket::m_connect;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -