下载了《ACE自适配通信环境中文技术文档》,很不错,感谢马维达同志。
从中篇第二章开始看,按照上一篇的方法将数据报的代码放入项目编译、运行,发现几个
问题:
1. 服务端收不到消息,检查客户端发现发送失败,追查下去,可能由于ACE的版本更新,
按原来的写法在远端地址初始化时出现了问题,给地址时应该以"IP:Port"的方式给出。
2. 客户端发送成功后,服务端成功收到并回执,但是客户端没收到。检查后,发现是客
户端接收长度不够,将SIZE_DATA改成29就行了。
3. 继续调试,发现客户端第二次发送时,服务端突然退出了。一检查,由于客户端将新
收下的字符串发送出去了,超过了第一次发送的字符串的长度,服务器接收失败。因此,需要
在客户端接收成功后,重新设置需要发送的字符串。
下面是修改过的代码:
1
//Server
2
#include "ace/OS.h"
3
#include "ace/SOCK_Dgram.h"
4
#include "ace/INET_Addr.h"
5
#include "ace/Log_Msg.h"
6
7
#ifndef _DEBUG
8
#pragma comment( lib, "ace.lib" )
9
#else
10
#pragma comment( lib, "aced.lib" )
11
#endif
12
13
#define DATA_BUFFER_SIZE 1024
14
#define SIZE_DATA 19
15
16
class Server
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1
//Client
2
#include "ace/OS.h"
3
#include "ace/SOCK_Dgram.h"
4
#include "ace/INET_Addr.h"
5
#include "ace/Log_Msg.h"
6
7
#ifndef _DEBUG
8
#pragma comment( lib, "ace.lib" )
9
#else
10
#pragma comment( lib, "aced.lib" )
11
#endif
12
13
#define DATA_BUFFER_SIZE 1024
14
#define SIZE_DATA 29
15
16
class Client
17
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17