关于多客户端和服务器通信的问题
服务器会根据接收到客户端帧来发送相对应的响应帧,在服务器开启两个线程,一个recv线程,一个send线程,recv线程不断的接收来自不同客户端的帧,这里准备设定一个消息缓冲区来存储数据,有个问题是如何做到根据接收到不同客户端发送的帧,send线程发出相对应的响应帧,而且如何解决线程同步的问题?请各位大侠帮我看看,给点意见
tcp还是udp?
tcp 可以用一个线程在监听,当有连接的时候,等待请求accept 返回新的socket连接,你再开启一个线程去和这个连接通讯就行了,原来的那个监听线程继续他的监听工作。
下面是伪代码来的
大概的逻辑是:
ThreadFunc(param)
{
int accept_socket = param;
收发数据
}
main
{
int server_socket = socket(AF_INET, SOCK_STREAM, 0);
bind(server_socket,……) // 绑定端口
listen(server_socket, SOMAXCONN) // 监听
while (run)
{
int accept_socket = accept(server_socket,……);
CreateThread(……ThreadFunc, accept_socket ……);
}
}