将消息发送到服务的方法?

时间:2013-03-27 14:02:45

标签: c++ windows service udp client-server

我有一个客户端服务器程序,我想将服务器更改为服务。所以我从这里拿了一些代码Svp.cpp。它工作正常,但我使用UDP创建客户端服务器所以我想知道是否有另一种方式向服务发送消息?客户端将消息发送到服务器(服务),服务器只是将它们回送回来。是否有必要使用UDP或TCP连接来发送和接收消息?

这是程序的一部分,它接收来自客户端的消息(其余代码来自Svp.cpp)

SOCKET socketS;

InitWinsock();
struct sockaddr_in local;
struct sockaddr_in from;
int fromlen = sizeof(from);
local.sin_family = AF_INET;
local.sin_port = htons(1234);
local.sin_addr.s_addr = INADDR_ANY;

socketS = socket(AF_INET,SOCK_DGRAM,0);
bind(socketS,(sockaddr*)&local,sizeof(local));
while (1)
{
    char buffer[1024];
    ZeroMemory(buffer, sizeof(buffer));
    if (recvfrom(socketS,buffer,sizeof(buffer),0,(sockaddr*)&from,&fromlen)!=SOCKET_ERROR)
    {
        sendto(socketS, buffer, sizeof(buffer), 0, (sockaddr*)&from, fromlen);
    }
}
closesocket(socketS);

1 个答案:

答案 0 :(得分:0)

如果客户端和服务器应用程序位于同一台计算机上,则可以使用命名管道。

Named Pipes

我有一个系统服务,我不得不删除UI,而不是创建一个套接字来在UI和服务之间进行通信,我们使用了Named Pipes。这很好,因为我们的一些客户担心机器上有一个开放式侦听TCP套接字的安全性。

如果你走这条路,你必须在两个应用程序之间设置某种信令,因为管道不会像套接字那样通知你读/写。但这是一个非常可行的解决方案。