Commit e06e76de by NitefullWind

1. 实现发送数据前加消息头。

parent eeafa578
...@@ -12,9 +12,8 @@ ...@@ -12,9 +12,8 @@
#define _WINSOCK_DEPRECATED_NO_WARNINGS #define _WINSOCK_DEPRECATED_NO_WARNINGS
#define SERVERIP "127.0.0.1" #define SERVERIP "127.0.0.1"
#define SERVERPORT 34952 //#define SERVERIP "172.16.13.87"
#define FM_ERROR -1; #define SERVERPORT 23770
#define MAXLINE 4096
#define FM_ERROR_SOCKET "{\"statusCode\": 104, \"msg\": \"本地Socket通讯错误.\"}" #define FM_ERROR_SOCKET "{\"statusCode\": 104, \"msg\": \"本地Socket通讯错误.\"}"
#define FM_ERROR_TIMEOUT "{\"statusCode\": 104, \"msg\": \"本地Socket通讯超时.\"}" #define FM_ERROR_TIMEOUT "{\"statusCode\": 104, \"msg\": \"本地Socket通讯超时.\"}"
...@@ -40,12 +39,12 @@ extern "C" { ...@@ -40,12 +39,12 @@ extern "C" {
Log("Initialising Winsock..."); Log("Initialising Winsock...");
if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0) if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0)
{ {
MakeError("Error. Startup error: %d", WSAGetLastError()) MakeError("Error. Startup error: %d. Server: %s, Port: %d", WSAGetLastError(), SERVERIP, SERVERPORT)
} }
if(isOk && (_socket = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) if(isOk && (_socket = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET)
{ {
MakeError("Could not create socket: %d", WSAGetLastError()) 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_addr.S_un.S_addr = (ULONG)inet_addr(SERVERIP);
...@@ -57,13 +56,13 @@ extern "C" { ...@@ -57,13 +56,13 @@ extern "C" {
if (isOk && connect(_socket, (struct sockaddr *)&_server, sizeof(_server)) < 0) if (isOk && connect(_socket, (struct sockaddr *)&_server, sizeof(_server)) < 0)
{ {
MakeError("Error. connect error: %d", WSAGetLastError()) 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, strlen(req), 0) < 0)
if (isOk && Send(_socket, req) < 0) if (isOk && Send(_socket, req) < 0)
{ {
MakeError("Error. Send error: %d", WSAGetLastError()) MakeError("Error. Send error: %d. Server: %s, Port: %d", WSAGetLastError(), SERVERIP, SERVERPORT)
} }
if (isOk) { if (isOk) {
Log("Send data: %s", req); Log("Send data: %s", req);
...@@ -74,9 +73,9 @@ extern "C" { ...@@ -74,9 +73,9 @@ extern "C" {
//if (isOk && (recv_size = readline(_socket, rsp, 40960)) == SOCKET_ERROR) //if (isOk && (recv_size = readline(_socket, rsp, 40960)) == SOCKET_ERROR)
if (isOk && (recv_size = Recv(_socket, rsp)) == SOCKET_ERROR) if (isOk && (recv_size = Recv(_socket, rsp)) == SOCKET_ERROR)
{ {
MakeError("Error. Recv error: %d", WSAGetLastError()) MakeError("Error. Recv error: %d. Server: %s, Port: %d", WSAGetLastError(), SERVERIP, SERVERPORT)
} else if(recv_size == 0) { } else if(recv_size == 0) {
MakeError("Error. Connect closed: %d", WSAGetLastError()) MakeError("Error. Connect closed: %d. Server: %s, Port: %d", WSAGetLastError(), SERVERIP, SERVERPORT)
} }
if (isOk) { if (isOk) {
......
...@@ -8,6 +8,7 @@ int Recv(SOCKET socket, char *ptr) ...@@ -8,6 +8,7 @@ int Recv(SOCKET socket, char *ptr)
#ifdef NeedSocketHeaderRecv #ifdef NeedSocketHeaderRecv
#else #else
#endif
while(totalLen ==0 || totalLen < needLen) { while(totalLen ==0 || totalLen < needLen) {
strset(tempBuf, 0); strset(tempBuf, 0);
if( (tempLen = recv(socket, tempBuf, MAX_SIZE, 0)) < 0) { if( (tempLen = recv(socket, tempBuf, MAX_SIZE, 0)) < 0) {
...@@ -27,7 +28,6 @@ int Recv(SOCKET socket, char *ptr) ...@@ -27,7 +28,6 @@ int Recv(SOCKET socket, char *ptr)
Log("Total: Size:%d, Data:%s\n", totalLen, ptr); Log("Total: Size:%d, Data:%s\n", totalLen, ptr);
} }
} }
#endif
return totalLen; return totalLen;
} }
......
...@@ -4,15 +4,16 @@ ...@@ -4,15 +4,16 @@
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);
#ifdef NeedSocketHeaderSend #ifdef NeedSocketHeaderSend
int addHeaderDataLength = GetAddHeaderReqDataLength(ptr); int addHeaderDataLength = GetAddHeaderReqDataLength(ptr);
char *addHeaderData = new char[addHeaderDataLength]; char *addHeaderData = new char[addHeaderDataLength];
GetAddHeaderReqData(ptr, addHeaderData, addHeaderDataLength); GetAddHeaderReqData(ptr, addHeaderData, addHeaderDataLength);
sendData = (char*)addHeaderData; sendData = (char*)addHeaderData;
sendLength = addHeaderDataLength;
#endif #endif
int tempLen = -1;
int tempLen = -1, totalLen = 0; if( (tempLen = send(socket, sendData, sendLength, 0)) < 0) {
if( (tempLen = send(socket, sendData, strlen(sendData), 0)) < 0) {
Log("Error: other error.\n"); Log("Error: other error.\n");
return tempLen; return tempLen;
} else { } else {
......
...@@ -28,12 +28,10 @@ int GetAddHeaderReqData(const char *originData, char *addHeaderReqData, unsigned ...@@ -28,12 +28,10 @@ int GetAddHeaderReqData(const char *originData, char *addHeaderReqData, unsigned
header.len = originLen; header.len = originLen;
header.ver = 0x2; header.ver = 0x2;
// 在原始数据前加消息头 // 在原始数据前加消息头
strset(addHeaderReqData, 0); memset(addHeaderReqData, 0, newReqDataLength);
memset(addHeaderReqData, 0, originLen + sizeof(FMSOCKHEADER));
memcpy(addHeaderReqData, &header, sizeof(FMSOCKHEADER)); // 将消息头拷贝至addHeaderReqData memcpy(addHeaderReqData, &header, sizeof(FMSOCKHEADER)); // 将消息头拷贝至addHeaderReqData
strcat(addHeaderReqData, originData); //将原始数据追加到addHeaderReqData memcpy(addHeaderReqData+sizeof(FMSOCKHEADER), originData, originLen); //将原始数据追加到addHeaderReqData
return newReqDataLength; return newReqDataLength;
} }
\ No newline at end of file
...@@ -21,14 +21,14 @@ ...@@ -21,14 +21,14 @@
#define Log(_Format, ...) {printf("Function:%s, Line:%d: ", __FUNCTION__, __LINE__); printf(_Format, __VA_ARGS__); printf("\n");} #define Log(_Format, ...) {printf("Function:%s, Line:%d: ", __FUNCTION__, __LINE__); printf(_Format, __VA_ARGS__); printf("\n");}
const int MAX_SIZE = 40960; const int MAX_SIZE = 4096;
// 设置超时时间 // 设置超时时间
const int sendTimeOut = 0.5 * 60 * 1000; const int sendTimeOut = 0.5 * 60 * 1000;
const int recvTimeOut = 0.5 * 60 * 1000; const int recvTimeOut = 0.5 * 60 * 1000;
#ifndef NeedSocketHeaderSend #ifndef NeedSocketHeaderSend
//#define NeedSocketHeaderSend #define NeedSocketHeaderSend
#endif #endif
#ifndef NeedSocketHeaderRecv #ifndef NeedSocketHeaderRecv
//#define NeedSocketHeaderRecv #define NeedSocketHeaderRecv
#endif #endif
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment