Commit e06e76de by NitefullWind

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

parent eeafa578
......@@ -12,9 +12,8 @@
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#define SERVERIP "127.0.0.1"
#define SERVERPORT 34952
#define FM_ERROR -1;
#define MAXLINE 4096
//#define SERVERIP "172.16.13.87"
#define SERVERPORT 23770
#define FM_ERROR_SOCKET "{\"statusCode\": 104, \"msg\": \"本地Socket通讯错误.\"}"
#define FM_ERROR_TIMEOUT "{\"statusCode\": 104, \"msg\": \"本地Socket通讯超时.\"}"
......@@ -40,12 +39,12 @@ extern "C" {
Log("Initialising Winsock...");
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)
{
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);
......@@ -57,13 +56,13 @@ extern "C" {
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) < 0)
{
MakeError("Error. Send error: %d", WSAGetLastError())
MakeError("Error. Send error: %d. Server: %s, Port: %d", WSAGetLastError(), SERVERIP, SERVERPORT)
}
if (isOk) {
Log("Send data: %s", req);
......@@ -74,9 +73,9 @@ extern "C" {
//if (isOk && (recv_size = readline(_socket, rsp, 40960)) == 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) {
MakeError("Error. Connect closed: %d", WSAGetLastError())
MakeError("Error. Connect closed: %d. Server: %s, Port: %d", WSAGetLastError(), SERVERIP, SERVERPORT)
}
if (isOk) {
......
......@@ -8,6 +8,7 @@ int Recv(SOCKET socket, char *ptr)
#ifdef NeedSocketHeaderRecv
#else
#endif
while(totalLen ==0 || totalLen < needLen) {
strset(tempBuf, 0);
if( (tempLen = recv(socket, tempBuf, MAX_SIZE, 0)) < 0) {
......@@ -27,7 +28,6 @@ int Recv(SOCKET socket, char *ptr)
Log("Total: Size:%d, Data:%s\n", totalLen, ptr);
}
}
#endif
return totalLen;
}
......
......@@ -4,15 +4,16 @@
int Send(SOCKET socket, const char *ptr)
{
char *sendData = (char*)ptr;
int sendLength = strlen(ptr);
#ifdef NeedSocketHeaderSend
int addHeaderDataLength = GetAddHeaderReqDataLength(ptr);
char *addHeaderData = new char[addHeaderDataLength];
GetAddHeaderReqData(ptr, addHeaderData, addHeaderDataLength);
sendData = (char*)addHeaderData;
sendLength = addHeaderDataLength;
#endif
int tempLen = -1, totalLen = 0;
if( (tempLen = send(socket, sendData, strlen(sendData), 0)) < 0) {
int tempLen = -1;
if( (tempLen = send(socket, sendData, sendLength, 0)) < 0) {
Log("Error: other error.\n");
return tempLen;
} else {
......
......@@ -28,12 +28,10 @@ int GetAddHeaderReqData(const char *originData, char *addHeaderReqData, unsigned
header.len = originLen;
header.ver = 0x2;
// 在原始数据前加消息头
strset(addHeaderReqData, 0);
memset(addHeaderReqData, 0, originLen + sizeof(FMSOCKHEADER));
memcpy(addHeaderReqData, &header, sizeof(FMSOCKHEADER)); // 将消息头拷贝至addHeaderReqData
strcat(addHeaderReqData, originData); //将原始数据追加到addHeaderReqData
memset(addHeaderReqData, 0, newReqDataLength);
memcpy(addHeaderReqData, &header, sizeof(FMSOCKHEADER)); // 将消息头拷贝至addHeaderReqData
memcpy(addHeaderReqData+sizeof(FMSOCKHEADER), originData, originLen); //将原始数据追加到addHeaderReqData
return newReqDataLength;
}
\ No newline at end of file
......@@ -21,14 +21,14 @@
#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 recvTimeOut = 0.5 * 60 * 1000;
#ifndef NeedSocketHeaderSend
//#define NeedSocketHeaderSend
#define NeedSocketHeaderSend
#endif
#ifndef NeedSocketHeaderRecv
//#define NeedSocketHeaderRecv
#define NeedSocketHeaderRecv
#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