【发布时间】:2011-03-31 06:38:37
【问题描述】:
我正在尝试在 C 套接字之间运行 2 路通信。为了设置套接字,我按照此链接 (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();
}
};
【问题讨论】:
标签: c sockets networking