我正在尝试在C套接字之间运行双向通信。为了设置套接字,我按照此链接上的说明(http://www.linuxhowtos.org/C_C++/socket.htm),一切正常。从客户端向服务器发送消息非常有效。
但是,我还希望服务器能够将响应消息发送回客户端。这是如何完成的?如果我在两端设置客户端和服务器连接,则其中一个无法绑定。
修改更多代码。目前,我已经使用这种类型的套接字并将它们放入c ++代码中,因为这是我的熟悉程度。忽略面向对象。
//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);
}
在Connection类中,
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] = '\0';
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.\n" << endl;
exit(-1);
}
if (is_server)
{
AddrSetupServer(); // standard calls here. Pretty well what's shown in link provided
BindServer();
ListenServer();
WaitConnectionServer();
}
else
{
AddrSetupClient();
ConnectClient();
}
};
答案 0 :(得分:2)
连接后,它是双向的;只需通过套接字发送您的回复。