Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
FreemudAPI
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
zhenfei.zhang
FreemudAPI
Commits
9ebb853d
Commit
9ebb853d
authored
Feb 24, 2018
by
NitefullWind
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1. 实现可配置ip、端口、是否需要消息头等。
parent
de68aeab
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
187 additions
and
129 deletions
+187
-129
FreemudAPI/FreemudAPI.cpp
+67
-72
FreemudAPI/fm_log.h
+2
-1
FreemudAPI/recv.h
+34
-35
FreemudAPI/send.h
+15
-10
FreemudAPI/stdafx.cpp
+37
-0
FreemudAPI/stdafx.h
+31
-10
test/test.cpp
+1
-1
No files found.
FreemudAPI/FreemudAPI.cpp
View file @
9ebb853d
...
@@ -3,6 +3,7 @@
...
@@ -3,6 +3,7 @@
#include "stdafx.h"
#include "stdafx.h"
#include "fm_log.h"
#include "fmerror.h"
#include "fmerror.h"
#include "send.h"
#include "send.h"
#include "recv.h"
#include "recv.h"
...
@@ -11,10 +12,6 @@
...
@@ -11,10 +12,6 @@
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#define SERVERIP "127.0.0.1"
//#define SERVERIP "172.16.13.87"
#define SERVERPORT 23770
#define MakeError(msg, ...) \
#define MakeError(msg, ...) \
strset(ErrorMsg, 0); \
strset(ErrorMsg, 0); \
sprintf(ErrorMsg, msg, __VA_ARGS__); \
sprintf(ErrorMsg, msg, __VA_ARGS__); \
...
@@ -22,74 +19,71 @@
...
@@ -22,74 +19,71 @@
LOG() << ErrorMsg; \
LOG() << ErrorMsg; \
isOk = false;
isOk = false;
extern
"C"
{
extern
"C"
__declspec
(
dllexport
)
int
__stdcall
FMGetResponse
(
const
char
*
req
,
char
*
rsp
,
unsigned
int
byteSize
)
__declspec
(
dllexport
)
int
__stdcall
FMGetResponse
(
const
char
*
req
,
char
*
rsp
,
unsigned
int
byteSize
)
{
WSADATA
wsa
;
SOCKET
_socket
;
struct
sockaddr_in
_server
;
bool
isOk
=
true
;
Freemud
::
Error
_error
;
char
ErrorMsg
[
2048
]
=
{
0
};
//Log("Initialising Winsock...");
if
(
WSAStartup
(
MAKEWORD
(
2
,
2
),
&
wsa
)
!=
0
)
{
{
WSADATA
wsa
;
MakeError
(
"Error. Startup error: %d. Server: %s, Port: %d"
,
WSAGetLastError
(),
setting
.
ip
.
c_str
(),
setting
.
port
)
SOCKET
_socket
;
struct
sockaddr_in
_server
;
bool
isOk
=
true
;
Freemud
::
Error
_error
;
char
ErrorMsg
[
2048
]
=
{
0
};
//Log("Initialising Winsock...");
if
(
WSAStartup
(
MAKEWORD
(
2
,
2
),
&
wsa
)
!=
0
)
{
MakeError
(
"Error. Startup error: %d. Server: %s, Port: %d"
,
WSAGetLastError
(),
SERVERIP
,
SERVERPORT
)
}
if
(
isOk
&&
(
_socket
=
socket
(
AF_INET
,
SOCK_STREAM
,
0
))
==
INVALID_SOCKET
)
{
MakeError
(
"Could not create socket: %d. Server: %s, Port: %d"
,
WSAGetLastError
(),
SERVERIP
,
SERVERPORT
)
}
_server
.
sin_addr
.
S_un
.
S_addr
=
(
ULONG
)
inet_addr
(
SERVERIP
);
_server
.
sin_family
=
AF_INET
;
_server
.
sin_port
=
htons
(
SERVERPORT
);
setsockopt
(
_socket
,
SOL_SOCKET
,
SO_SNDTIMEO
,
(
char
*
)
&
sendTimeOut
,
sizeof
(
int
));
setsockopt
(
_socket
,
SOL_SOCKET
,
SO_RCVTIMEO
,
(
char
*
)
&
recvTimeOut
,
sizeof
(
int
));
if
(
isOk
&&
connect
(
_socket
,
(
struct
sockaddr
*
)
&
_server
,
sizeof
(
_server
))
<
0
)
{
MakeError
(
"Error. connect error: %d. Server: %s, Port: %d"
,
WSAGetLastError
(),
SERVERIP
,
SERVERPORT
)
}
//if (isOk && send(_socket, req, strlen(req), 0) < 0)
if
(
isOk
&&
Send
(
_socket
,
req
)
<
0
)
{
MakeError
(
"Error. Send error: %d. Server: %s, Port: %d"
,
WSAGetLastError
(),
SERVERIP
,
SERVERPORT
)
}
if
(
isOk
)
{
LOG
()
<<
"Send data: "
<<
req
;
}
int
recv_size
=
SOCKET_ERROR
;
//if (isOk && (recv_size = recv(_socket, rsp, 40960, 0)) == SOCKET_ERROR)
//if (isOk && (recv_size = readline(_socket, rsp, 40960)) == SOCKET_ERROR)
memset
(
rsp
,
0
,
byteSize
);
if
(
isOk
&&
(
recv_size
=
Recv
(
_socket
,
rsp
,
byteSize
-
1
))
==
SOCKET_ERROR
)
{
MakeError
(
"Error. Recv error: %d. Server: %s, Port: %d"
,
WSAGetLastError
(),
SERVERIP
,
SERVERPORT
)
}
else
if
(
recv_size
==
FMError_ConnectClosed
.
Code
())
{
MakeError
(
"Error. %s(%d). Server: %s, Port: %d"
,
FMError_ConnectClosed
.
MsgCStr
(),
WSAGetLastError
(),
SERVERIP
,
SERVERPORT
)
}
else
if
(
recv_size
==
FMError_IncorrectHeader
.
Code
())
{
MakeError
(
"Error. %s. Server: %s, Port: %d"
,
FMError_IncorrectHeader
.
MsgCStr
(),
SERVERIP
,
SERVERPORT
)
}
else
if
(
recv_size
==
FMError_BufferOverflow
.
Code
())
{
MakeError
(
"Error. %s. Server: %s, Port: %d"
,
FMError_BufferOverflow
.
MsgCStr
(),
SERVERIP
,
SERVERPORT
)
}
if
(
isOk
)
{
LOG
()
<<
"Recv size: "
<<
recv_size
<<
" Recv data: "
<<
rsp
;
}
else
if
(
_error
.
Code
()
==
FM_ERROR_CODE_SOCKET
)
{
sprintf
(
ErrorMsg
,
"{
\"
statusCode
\"
: 104,
\"
msg
\"
:
\"
本地Socket通讯错误(%s).
\"
}"
,
_error
.
Msg
().
c_str
());
strcpy
(
rsp
,
ErrorMsg
);
}
closesocket
(
_socket
);
WSACleanup
();
return
recv_size
;
}
}
if
(
isOk
&&
(
_socket
=
socket
(
AF_INET
,
SOCK_STREAM
,
0
))
==
INVALID_SOCKET
)
{
MakeError
(
"Could not create socket: %d. Server: %s, Port: %d"
,
WSAGetLastError
(),
setting
.
ip
.
c_str
(),
setting
.
port
)
}
_server
.
sin_addr
.
S_un
.
S_addr
=
(
ULONG
)
inet_addr
(
setting
.
ip
.
c_str
());
_server
.
sin_family
=
AF_INET
;
_server
.
sin_port
=
htons
(
setting
.
port
);
setsockopt
(
_socket
,
SOL_SOCKET
,
SO_SNDTIMEO
,
(
char
*
)
&
setting
.
timeOutSend
,
sizeof
(
int
));
setsockopt
(
_socket
,
SOL_SOCKET
,
SO_RCVTIMEO
,
(
char
*
)
&
setting
.
timeOutRecv
,
sizeof
(
int
));
if
(
isOk
&&
connect
(
_socket
,
(
struct
sockaddr
*
)
&
_server
,
sizeof
(
_server
))
<
0
)
{
MakeError
(
"Error. connect error: %d. Server: %s, Port: %d"
,
WSAGetLastError
(),
setting
.
ip
.
c_str
(),
setting
.
port
)
}
//if (isOk && send(_socket, req, strlen(req), 0) < 0)
if
(
isOk
&&
Send
(
_socket
,
req
)
<
0
)
{
MakeError
(
"Error. Send error: %d. Server: %s, Port: %d"
,
WSAGetLastError
(),
setting
.
ip
.
c_str
(),
setting
.
port
)
}
if
(
isOk
)
{
LOG
()
<<
"Send data: "
<<
req
;
}
int
recv_size
=
SOCKET_ERROR
;
//if (isOk && (recv_size = recv(_socket, rsp, 40960, 0)) == SOCKET_ERROR)
//if (isOk && (recv_size = readline(_socket, rsp, 40960)) == SOCKET_ERROR)
memset
(
rsp
,
0
,
byteSize
);
if
(
isOk
&&
(
recv_size
=
Recv
(
_socket
,
rsp
,
byteSize
-
1
))
==
SOCKET_ERROR
)
{
MakeError
(
"Error. Recv error: %d. Server: %s, Port: %d"
,
WSAGetLastError
(),
setting
.
ip
.
c_str
(),
setting
.
port
)
}
else
if
(
recv_size
==
FMError_ConnectClosed
.
Code
())
{
MakeError
(
"Error. %s(%d). Server: %s, Port: %d"
,
FMError_ConnectClosed
.
MsgCStr
(),
WSAGetLastError
(),
setting
.
ip
.
c_str
(),
setting
.
port
)
}
else
if
(
recv_size
==
FMError_IncorrectHeader
.
Code
())
{
MakeError
(
"Error. %s. Server: %s, Port: %d"
,
FMError_IncorrectHeader
.
MsgCStr
(),
setting
.
ip
.
c_str
(),
setting
.
port
)
}
else
if
(
recv_size
==
FMError_BufferOverflow
.
Code
())
{
MakeError
(
"Error. %s. Server: %s, Port: %d"
,
FMError_BufferOverflow
.
MsgCStr
(),
setting
.
ip
.
c_str
(),
setting
.
port
)
}
if
(
isOk
)
{
LOG
()
<<
"Recv size: "
<<
recv_size
<<
" Recv data: "
<<
rsp
;
}
else
if
(
_error
.
Code
()
==
FM_ERROR_CODE_SOCKET
)
{
sprintf
(
ErrorMsg
,
"{
\"
statusCode
\"
: 104,
\"
msg
\"
:
\"
本地Socket通讯错误(%s).
\"
}"
,
_error
.
Msg
().
c_str
());
strcpy
(
rsp
,
ErrorMsg
);
}
closesocket
(
_socket
);
WSACleanup
();
return
recv_size
;
}
}
\ No newline at end of file
FreemudAPI/fm_log.h
View file @
9ebb853d
#ifndef FM_LOG_H
#ifndef FM_LOG_H
#define FM_LOG_H
#define FM_LOG_H
#include "stdafx.h"
#include "fm_tool.h"
#include "fm_tool.h"
#include <time.h>
#include <time.h>
...
@@ -23,7 +24,7 @@ public :
...
@@ -23,7 +24,7 @@ public :
fm_tool
::
GetProcPath
(
filepath
);
fm_tool
::
GetProcPath
(
filepath
);
Get_LOG_FileName
();
Get_LOG_FileName
();
filepath
.
append
(
"fmdlllog
\\
"
);
filepath
.
append
(
setting
.
logPath
);
mkdir
(
filepath
.
c_str
());
mkdir
(
filepath
.
c_str
());
filepath
.
append
(
_curr_filename
);
filepath
.
append
(
_curr_filename
);
filepath
.
append
(
".txt"
);
filepath
.
append
(
".txt"
);
...
...
FreemudAPI/recv.h
View file @
9ebb853d
#pragma once
#pragma once
#include "stdafx.h"
#include "stdafx.h"
#include "fm_log.h"
#include "socketHeader.h"
#include "socketHeader.h"
int
_Recv
(
SOCKET
socket
,
char
*
ptr
,
int
length
)
int
_Recv
(
SOCKET
socket
,
char
*
ptr
,
int
length
)
...
@@ -44,44 +45,44 @@ int Recv(SOCKET socket, char *ptr, unsigned int byteSize)
...
@@ -44,44 +45,44 @@ int Recv(SOCKET socket, char *ptr, unsigned int byteSize)
memcpy
(
recvBuf
+
totalLen
,
tempBuf
,
tempLen
);
// 临时数据拷贝到接收数据
memcpy
(
recvBuf
+
totalLen
,
tempBuf
,
tempLen
);
// 临时数据拷贝到接收数据
totalLen
+=
tempLen
;
totalLen
+=
tempLen
;
//! 如果需要接受消息头
//! 如果需要接受消息头
#ifdef NeedSocketHeaderRecv
if
(
setting
.
needSocketHeaderRecv
)
{
if
(
needLen
==
-
1
&&
totalLen
>=
sizeof
(
FMSOCKHEADER
))
{
// 消息头接收完成
if
(
needLen
==
-
1
&&
totalLen
>=
sizeof
(
FMSOCKHEADER
))
{
// 消息头接收完成
FMSOCKHEADER
header
=
{
0
,
0
,
0
};
FMSOCKHEADER
header
=
{
0
,
0
,
0
};
memcpy
(
&
header
,
recvBuf
,
sizeof
(
FMSOCKHEADER
));
memcpy
(
&
header
,
recvBuf
,
sizeof
(
FMSOCKHEADER
));
if
(
header
.
flag
!=
FMHEADERFLAG
)
{
if
(
header
.
flag
!=
FMHEADERFLAG
)
{
//! 如果兼容接收没有消息头或消息头不对的数据,则不终止程序
//! 如果兼容接收没有消息头或消息头不对的数据,则不终止程序
#ifdef NoHeaderCompatible
if
(
setting
.
noHeaderCompatible
)
{
needLen
=
totalLen
;
needLen
=
totalLen
;
dataLen
=
totalLen
;
dataLen
=
totalLen
;
#else // NoHeaderCompatible
}
else
{
delete
[]
recvBuf
;
delete
[]
recvBuf
;
delete
[]
tempBuf
;
delete
[]
tempBuf
;
return
FMError_IncorrectHeader
.
Code
();
// 消息头不符
return
FMError_IncorrectHeader
.
Code
();
// 消息头不符
#endif // NoHeaderCompatible
}
}
else
{
}
else
{
needLen
=
header
.
len
+
sizeof
(
FMSOCKHEADER
);
// 设置实际需要接收长度
needLen
=
header
.
len
+
sizeof
(
FMSOCKHEADER
);
// 设置实际需要接收长度
dataLen
=
header
.
len
;
dataLen
=
header
.
len
;
}
if
(
byteSize
<
dataLen
)
{
// 判断接收Buffer长度是否足够
LOG
()
<<
"Error. Buffer overflow, Except size: "
<<
byteSize
<<
" Actual size: "
<<
dataLen
;
delete
[]
recvBuf
;
delete
[]
tempBuf
;
return
FMError_BufferOverflow
.
Code
();
}
}
}
}
else
{
if
(
byteSize
<
dataLen
)
{
// 判断接收Buffer长度是否足够
needLen
=
totalLen
;
LOG
()
<<
"Error. Buffer overflow, Except size: "
<<
byteSize
<<
" Actual size: "
<<
dataLen
;
dataLen
=
totalLen
;
if
(
byteSize
<
dataLen
)
{
// 判断接收Buffer长度是否足够
delete
[]
recvBuf
;
delete
[]
recvBuf
;
delete
[]
tempBuf
;
delete
[]
tempBuf
;
return
FMError_BufferOverflow
.
Code
();
return
FMError_BufferOverflow
.
Code
();
}
}
}
}
#else // NeedSocketHeaderRecv
needLen
=
totalLen
;
dataLen
=
totalLen
;
if
(
byteSize
<
dataLen
)
{
// 判断接收Buffer长度是否足够
delete
[]
recvBuf
;
delete
[]
tempBuf
;
return
FMError_BufferOverflow
.
Code
();
}
#endif // NeedSocketHeaderRecv
}
}
memcpy
(
ptr
,
recvBuf
+
needLen
-
dataLen
,
needLen
);
memcpy
(
ptr
,
recvBuf
+
needLen
-
dataLen
,
needLen
);
...
@@ -95,8 +96,6 @@ static int read_cnt;
...
@@ -95,8 +96,6 @@ static int read_cnt;
static
char
*
read_ptr
;
static
char
*
read_ptr
;
static
char
read_buf
[
MAX_SIZE
];
static
char
read_buf
[
MAX_SIZE
];
const
int
FM_ERROR_CODE_SOCKET
=
-
1
;
static
int
my_read
(
int
fd
,
char
*
ptr
)
static
int
my_read
(
int
fd
,
char
*
ptr
)
{
{
if
(
read_cnt
<=
0
)
{
if
(
read_cnt
<=
0
)
{
...
...
FreemudAPI/send.h
View file @
9ebb853d
#pragma once
#pragma once
#include "stdafx.h"
#include "stdafx.h"
#include "fm_log.h"
#include "socketHeader.h"
#include "socketHeader.h"
int
Send
(
SOCKET
socket
,
const
char
*
ptr
)
int
Send
(
SOCKET
socket
,
const
char
*
ptr
)
{
{
char
*
sendData
=
(
char
*
)
ptr
;
char
*
sendData
=
(
char
*
)
ptr
;
int
sendLength
=
strlen
(
ptr
);
int
sendLength
=
strlen
(
ptr
);
#ifdef NeedSocketHeaderSend
char
*
addHeaderData
;
int
addHeaderDataLength
=
GetAddHeaderReqDataLength
(
ptr
);
if
(
setting
.
needSocketHeaderSend
)
char
*
addHeaderData
=
new
char
[
addHeaderDataLength
];
{
GetAddHeaderReqData
(
ptr
,
addHeaderData
,
addHeaderDataLength
);
int
addHeaderDataLength
=
GetAddHeaderReqDataLength
(
ptr
);
sendData
=
(
char
*
)
addHeaderData
;
addHeaderData
=
new
char
[
addHeaderDataLength
];
sendLength
=
addHeaderDataLength
;
GetAddHeaderReqData
(
ptr
,
addHeaderData
,
addHeaderDataLength
);
#endif
sendData
=
(
char
*
)
addHeaderData
;
sendLength
=
addHeaderDataLength
;
}
int
tempLen
=
-
1
;
int
tempLen
=
-
1
;
if
(
(
tempLen
=
send
(
socket
,
sendData
,
sendLength
,
0
))
<
0
)
{
if
(
(
tempLen
=
send
(
socket
,
sendData
,
sendLength
,
0
))
<
0
)
{
LOG
()
<<
"Error: other error."
;
LOG
()
<<
"Error: other error."
;
}
}
#ifdef NeedSocketHeaderSend
if
(
setting
.
needSocketHeaderSend
)
{
delete
[]
addHeaderData
;
delete
[]
addHeaderData
;
#endif
}
return
tempLen
;
return
tempLen
;
}
}
\ No newline at end of file
FreemudAPI/stdafx.cpp
View file @
9ebb853d
...
@@ -6,3 +6,39 @@
...
@@ -6,3 +6,39 @@
// TODO: 在 STDAFX.H 中
// TODO: 在 STDAFX.H 中
// 引用任何所需的附加头文件,而不是在此文件中引用
// 引用任何所需的附加头文件,而不是在此文件中引用
FMSetting
::
FMSetting
()
{
fm_tool
::
GetProcPath
(
this
->
settingPath
);
this
->
settingPath
.
append
(
"FreemudAPI.ini"
);
fm_tool
::
ReadTMPForType
(
this
->
settingPath
,
SETTING_SESSION_Server
,
SETTING_IP
,
this
->
ip
);
std
::
string
tempStr
=
"23770"
;
fm_tool
::
ReadTMPForType
(
this
->
settingPath
,
SETTING_SESSION_Server
,
SETTING_Port
,
tempStr
);
this
->
port
=
atoi
(
tempStr
.
c_str
());
tempStr
=
"1"
;
fm_tool
::
ReadTMPForType
(
this
->
settingPath
,
SETTING_SESSION_Server
,
SETTING_NeedSocketHeaderSend
,
tempStr
);
this
->
needSocketHeaderSend
=
(
atoi
(
tempStr
.
c_str
())
!=
0
);
tempStr
=
"1"
;
fm_tool
::
ReadTMPForType
(
this
->
settingPath
,
SETTING_SESSION_Server
,
SETTING_NeedSocketHeaderRecv
,
tempStr
);
this
->
needSocketHeaderRecv
=
(
atoi
(
tempStr
.
c_str
())
!=
0
);
tempStr
=
"1"
;
fm_tool
::
ReadTMPForType
(
this
->
settingPath
,
SETTING_SESSION_Server
,
SETTING_NoHeaderCompatible
,
tempStr
);
this
->
noHeaderCompatible
=
(
atoi
(
tempStr
.
c_str
())
!=
0
);
tempStr
=
"60"
;
fm_tool
::
ReadTMPForType
(
this
->
settingPath
,
SETTING_SESSION_Server
,
SETTING_TimeOutSend
,
tempStr
);
this
->
timeOutSend
=
atoi
(
tempStr
.
c_str
());
tempStr
=
"120"
;
fm_tool
::
ReadTMPForType
(
this
->
settingPath
,
SETTING_SESSION_Server
,
SETTING_TimeOutRecv
,
tempStr
);
this
->
timeOutRecv
=
atoi
(
tempStr
.
c_str
());
fm_tool
::
ReadTMPForType
(
this
->
settingPath
,
SETTING_SESSION_Log
,
SETTING_Path
,
this
->
logPath
);
};
FMSetting
setting
=
FMSetting
();
\ No newline at end of file
FreemudAPI/stdafx.h
View file @
9ebb853d
...
@@ -18,23 +18,45 @@
...
@@ -18,23 +18,45 @@
#include <winsock2.h>
#include <winsock2.h>
#include <Windows.h>
#include <Windows.h>
#include "fmerror.h"
#include "fmerror.h"
#include "fm_log.h"
#include "fm_tool.h"
struct
FMSetting
{
#define SETTING_SESSION_Server "Server"
#define SETTING_SESSION_Log "Log"
#define SETTING_IP "IP"
#define SETTING_Port "Port"
#define SETTING_NeedSocketHeaderSend "setting.needSocketHeaderSend"
#define SETTING_NeedSocketHeaderRecv "setting.needSocketHeaderRecv"
#define SETTING_NoHeaderCompatible "setting.noHeaderCompatible"
#define SETTING_TimeOutSend "TimeOutSend"
#define SETTING_TimeOutRecv "TimeOutRecv"
#define SETTING_Path "Path"
FMSetting
();
std
::
string
settingPath
;
std
::
string
ip
;
int
port
;
bool
needSocketHeaderSend
;
bool
needSocketHeaderRecv
;
bool
noHeaderCompatible
;
int
timeOutSend
;
int
timeOutRecv
;
std
::
string
logPath
;
};
//#define Log(_Format, ...) {char msg[1024] = {0}; printf("Function:%s, Line:%d: ", __FUNCTION__, __LINE__); printf(_Format, __VA_ARGS__); printf("\n");}
//#define Log(_Format, ...) {char msg[1024] = {0}; printf("Function:%s, Line:%d: ", __FUNCTION__, __LINE__); printf(_Format, __VA_ARGS__); printf("\n");}
//#define Log(_Format, ...) {char msg[20480] = {0};sprintf(msg, _Format, __VA_ARGS__);LOG() << msg;}
//#define Log(_Format, ...) {char msg[20480] = {0};sprintf(msg, _Format, __VA_ARGS__);LOG() << msg;}
const
int
MAX_SIZE
=
4096
;
const
int
MAX_SIZE
=
4096
;
// 设置超时时间
const
int
sendTimeOut
=
0
.
5
*
60
*
1000
;
const
int
recvTimeOut
=
2
*
60
*
1000
;
#define NeedSocketHeaderSend
extern
FMSetting
setting
;
#define NeedSocketHeaderRecv
#define NoHeaderCompatible // 是否兼容接收没有消息头的数据
const
int
FM_ERROR_CODE_SOCKET
=
-
1
;
static
const
Freemud
::
Error
FMError_Success
(
100
,
"Success."
);
static
const
Freemud
::
Error
FMError_Success
(
100
,
"Success."
);
static
const
Freemud
::
Error
FMError_ConnectClosed
(
0
,
"Connection closed."
);
static
const
Freemud
::
Error
FMError_ConnectClosed
(
0
,
"Connection closed."
);
static
const
Freemud
::
Error
FMError_SocketError
(
-
1
,
"Socket error."
);
static
const
Freemud
::
Error
FMError_SocketError
(
FM_ERROR_CODE_SOCKET
,
"Socket error."
);
static
const
Freemud
::
Error
FMError_ConnectTimeout
(
-
2
,
"Connection timeout."
);
static
const
Freemud
::
Error
FMError_ConnectTimeout
(
-
2
,
"Connection timeout."
);
static
const
Freemud
::
Error
FMError_IncorrectHeader
(
-
3
,
"Incorrect socket's header."
);
static
const
Freemud
::
Error
FMError_IncorrectHeader
(
-
3
,
"Incorrect socket's header."
);
static
const
Freemud
::
Error
FMError_BufferOverflow
(
-
4
,
"Buffer overflow."
);
static
const
Freemud
::
Error
FMError_BufferOverflow
(
-
4
,
"Buffer overflow."
);
\ No newline at end of file
test/test.cpp
View file @
9ebb853d
...
@@ -5,7 +5,7 @@
...
@@ -5,7 +5,7 @@
#include <string>
#include <string>
#include <fstream>
#include <fstream>
typedef
int
(
__stdcall
*
FMGetResponse
)(
const
char
*
req
,
char
*
rsp
,
unsigned
int
byteSize
);
EXTERN_C
typedef
int
(
__stdcall
*
FMGetResponse
)(
const
char
*
req
,
char
*
rsp
,
unsigned
int
byteSize
);
int
_tmain
(
int
argc
,
_TCHAR
*
argv
[])
int
_tmain
(
int
argc
,
_TCHAR
*
argv
[])
{
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment