我试图用两种方式在C袖珍之间沟通。 为了建立袖珍目录,我遵循了有关这一链接的指示(http://www.linuxhowtos.org/C_C++/socket.htm),所有材料都做了罚款。 客户向服务器发送信息的工作非常有效。
然而,我也希望服务器能够向客户发出回复信息。 如何做到这一点? 如果我同时建立客户和服务器联系,其中之一不能约束。
<>edit/strong>更多代码。 目前,我使用了这种袖珍的风格,将其编为++的法典,这只是因为我很熟悉。 Ignore the Object-Orientness.
//main call
if (server)
{
Connection recv(true, "servername");
recv.GetMsg();
recv.SendMsg("test", 4);
}
else // client
{
Connection snd(false, "servername");
snd.GetMsg();
snd.SendMsg("this is a test", 14);
}
在连接班子内,
void SendMsg(char *msg, int msg_length)
{
send(some_socket, msg, msg_length, 0);
};
void GetMsg()
{
recvd = recv(opponent_socket, buffer, sizeof(buffer), 0);
buffer[recvd] = ;
cout << "Printing msg: " << buffer << endl;
};
Connection::Connection(bool isserver, char *servername)
{
is_server = isserver;
server = servername;
opponent_socket = 0;
some_socket = socket(PF_INET, SOCK_STREAM, 0);
if (some_socket < 0)
{
cout << "Connection failed.
" << endl;
exit(-1);
}
if (is_server)
{
AddrSetupServer(); // standard calls here. Pretty well what s shown in link provided
BindServer();
ListenServer();
WaitConnectionServer();
}
else
{
AddrSetupClient();
ConnectClient();
}
};