main.cpp
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:3k
源码类别:

模拟服务器

开发平台:

C/C++

  1. //目前使用的网络协议,头上两个字节是数据包的大小
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #include "zclient.h"
  6. ZBuffer z_buffer(102400, 10);
  7. DWORD WINAPI TestProc1(LPVOID lpParameter) {
  8. char buffer[1024];
  9. for(int index = 0; index < 1024; index++) buffer[index] = (char)index;
  10. *(short *)buffer = 10;
  11. *(short *)(buffer + 12) = 20;
  12. while(true) {
  13. if(!z_buffer.receiveData(0, buffer, 34)) continue;
  14. Sleep(1);
  15. if(!z_buffer.receiveData(0, buffer, 5)) continue;
  16. Sleep(1);
  17. z_buffer.receiveData(0, buffer, 7);
  18. Sleep(1);
  19. }
  20. return 0;
  21. }
  22. DWORD WINAPI TestProc2(LPVOID lpParameter) {
  23. char buffer[1024];
  24. for(int index = 0; index < 1024; index++) buffer[index] = (char)index;
  25. *(short *)buffer = 20;
  26. while(true) {
  27. if(!z_buffer.receiveData(1, buffer, 10)) continue;
  28. Sleep(1);
  29. z_buffer.receiveData(1, buffer + 10, 12);
  30. Sleep(1);
  31. }
  32. }
  33. DWORD WINAPI TestProc3(LPVOID lpParameter) {
  34. char buffer[1024];
  35. for(int index = 0; index < 1024; index++) buffer[index] = (char)index;
  36. while(true) {
  37. for(int index = 0; index < 100; index++) {
  38. if(!z_buffer.packData(3, buffer, 20)) break;
  39. Sleep(1);
  40. }
  41. /// z_buffer.sendPacket(3);
  42. }
  43. }
  44. DWORD WINAPI TestProc4(LPVOID lpParameter) {
  45. char buffer[1024];
  46. for(int index = 0; index < 1024; index++) buffer[index] = (char)index;
  47. while(true) {
  48. for(int index = 0; index < 100; index++) {
  49. if(!z_buffer.packData(4, buffer, 10)) {
  50. printf("error!!!rn");
  51. break;
  52. }
  53. Sleep(1);
  54. }
  55. // z_buffer.sendPacket(4);
  56. }
  57. }
  58. int main(int argc, char **argv) {
  59. //测试数据接收,使用多个线程,其中几个线程对某一个索引的连接增加数据,发送逐步增加的数据包,有三种情况,正好的,多个包的,不到一个包的数据
  60. //然后使用一个线程进行数据接收
  61. int size;
  62. ZClient client(&z_buffer);
  63. client.Startup();
  64. client.ConnectTo("192.168.22.105", 5622);
  65. char *packet;
  66. unsigned long length;
  67. while(true) {
  68. packet = (char *)client.GetPackFromServer(length);
  69. if(packet) {
  70. printf("read packet %dn", length);
  71. }
  72. Sleep(1);
  73. }
  74. client.Shutdown();
  75. /* DWORD dwID;
  76. CreateThread(NULL, 0, TestProc1, (LPVOID)0, 0, &dwID);
  77. CreateThread(NULL, 0, TestProc2, (LPVOID)0, 0, &dwID);
  78. CreateThread(NULL, 0, TestProc3, (LPVOID)0, 0, &dwID);
  79. CreateThread(NULL, 0, TestProc4, (LPVOID)0, 0, &dwID);
  80. while(true) {
  81. char *data = z_buffer.getPacket(0, size);
  82. while(data) {
  83. printf("connection 0 get packet %d total size %d max size = %drn", size, z_buffer.receive_perf.total_size, z_buffer.receive_perf.max_size);
  84. data = z_buffer.getPacket(0, size);
  85. }
  86. data = z_buffer.getPacket(1, size);
  87. while(data) {
  88. printf("connection 1 get packet %drn", size);
  89. data = z_buffer.getPacket(1, size);
  90. }
  91. data = z_buffer.getSendData(3, size);
  92. while(data) {
  93. z_buffer.sendData(3, size);
  94. printf("connection 3 send packet %drn", size);
  95. data = z_buffer.getSendData(3, size);
  96. }
  97. data = z_buffer.getSendData(4, size);
  98. while(data) {
  99. z_buffer.sendData(4, size);
  100. printf("connection 4 send packet %drn", size);
  101. data = z_buffer.getSendData(4, size);
  102. }
  103. Sleep(1);
  104. }*/
  105. return 0;
  106. }