使用Chilkat库编写TCP/IP服务器和客户端
Indy TCP/IP Server with Client using Chilkat Library
我目前正在尝试使用我的客户端与Chilkat库,因为客户端必须在Visual c++中编写,而不是Borland c++ (c++ Builder)。连接确实有效,但一旦我尝试从客户端发送一个字符串到服务器,它甚至没有击中IdTCPServerExecute
函数。是否有可能为客户端使用另一个库而不是服务器正在使用的库?如果有,怎么做?
编辑:我得到它的工作,客户端成功地发送一个字符串到服务器。现在我像这样处理客户机消息:
UnicodeString Message = AContext->Connection->Socket->AllData();
代替:
UnicodeString Message = AContext->Connection->Socket->ReadLn();
现在有一个类似的选项从服务器发送响应字符串吗?
if (IdHTTP->Get
("http://*/index.php?option=com_bookpro&controller=customer&task=bpajaxlogin&username=" +
slTokens->Strings[1] + "&password=" + slTokens->Strings[2] +
"&product_id=" + Class) == "true") {
AddLog("1");
char* Response = "Test";
AContext->Connection->Socket->Write(Response);
AddLog("2");
}
else {
AContext->Connection->Socket->WriteLn
("Authentication failed");
}
它也只显示AddLog("1");
而不显示AddLog("2");
。
客户端代码(使用Winsocks进行测试):
recv(ConnectSocket, recvbuf, recvbuflen, 0);
printf("Bytes received: %d, %sn", sizeof(recvbuf), recvbuf);
我目前试图使用我的客户端与Chilkat库,因为客户端必须在VCL c++中编写,而不是Borland c++ (c++ Builder)。
与"Borland c++"相比,"VCL c++"是什么?您指的是Borland的命令行编译器,而不是c++ Builder编译器吗?或者你指的是一个完全不同的第三方VCL框架,与Borland的VCL框架在c++ Builder中没有任何关系?请澄清你的问题。
连接确实有效,但一旦我尝试从客户端向服务器发送字符串,它甚至不会命中IdTCPServerExecute函数。
如果没有看到实际的服务器代码,这很难解释。
TIdTCPServer
为每个连接的客户端创建一个新线程。TIdTCPServer::OnExecute
事件与实际的网络活动无关,它只是在每个线程的生命周期内以无限循环的方式触发。OnExecute
事件根本不会被触发的唯一方法是:
-
您在
TIdTCPServer::OnConnect
事件中死锁线程,例如通过做一些不线程安全的事情。或者,您正在做一些导致抛出异常的事情,而您没有捕获它。未捕获的异常将终止线程。 -
客户端在
TIdTCPServer::OnConnect
事件处理程序仍在运行时断开连接,或者在事件处理程序退出后到第一次调用TIdTCPServer::OnExecute
事件处理程序之前的时间内断开连接。
是否有可能为客户端使用其他库而不是服务器正在使用的库?
当然有可能。TCP是一种标准化的传输协议。只要不同的TCP实现遵守标准,它们就可以毫无问题地相互通信。这是跨多个平台稳定通信的基础,互联网依赖于此。
- 我正在开发服务器,ip作为参数传递不起作用
- 我可以与 python 服务器而不是 c++ 客户端建立 tcp/ip 套接字吗?
- C++ Winsock2 客户端未通过远程 IP 连接到服务器
- 将静态 IP 分配给我的 ESP32 服务器后不再响应
- UDP客户端/服务器程序在不同的IP和端口上通信超过2个插座
- 服务器和客户端都在PC上运行.客户端可以使用PC的IP连接到服务器
- 如何在 TCP/IP 服务器中中断 accept()?
- boost::asio::ip::tcp::iostream,先启动客户端,然后等待服务器
- 使用Boost ASIO查找服务器IP
- 可视化如何使用C++程序获取DHCPV6服务器IP.我尝试使用DHCPv6RequestParams,但总是收到错误代码
- 如果我们只知道IP,如何知道服务器是否在线
- C++客户端到Java服务器(TCP/IP)
- 查找 DNS 服务器和网关的 IP 和 MAC 地址
- 在 ipv6 链接范围单播 udp 客户端-服务器中应用 boost::asio::ip::udp,有时有效,但有时无效
- 如何知道 IP 地址是否在 Linux 服务器上是本地的
- 使用 IOCP 的 TCP/IP 服务器.接收缓冲区中偶尔的数据损坏
- 为客户端-服务器通信构建TCP/IP服务器的最佳方式
- 使用Chilkat库编写TCP/IP服务器和客户端
- 处理多个客户端的单个TCP/IP服务器(在c++中)
- C++ IP 服务器套接字接收始终从 PHP 套接字客户端"0100000001000000"