程序启动时,会启动线程A,B
A线程是server(程序):
B线程是client(程序)A线程,是用来接收客户端C发送的信息,在经过判断后,由B发送到D服务端,D服务端判断后,发送回给B,B在经过A发送后给CA线程,大致程序如下
      SOCKADDR_IN addrAccept;
ZeroMemory(&addrAccept, sizeof(SOCKADDR_IN));
int nSockLen = sizeof(SOCKADDR);
SOCKET sockAccept = WSAAccept(sockSvr, (SOCKADDR*)&addrAccept, &nSockLen, 0, 0);
if(INVALID_SOCKET == sockSvr)
{
return 0;
}
PPER_HANDLE_DATA pPerHandle = (PPER_HANDLE_DATA)::GlobalAlloc(GPTR, sizeof(PER_HANDLE_DATA));
pPerHandle->s=sockAccept;
memcpy(&pPerHandle->addr, &addrAccept, nSockLen);
if(NULL==CreateIoCompletionPort((HANDLE)sockAccept, hCompletionPort, (DWORD)pPerHandle, 0))
{
m_lbx_star.AddString("服务端端口绑定失败");
return 0;
}
B线程,大致程序如下
        CString cs_serip;
WORD wVersionRequested;
WSADATA wsaC;
wVersionRequested = MAKEWORD( 2, 2 );
int res = WSAStartup(wVersionRequested,&wsaC);
if(res == -1)
{
return 0;
}
struct sockaddr_in socket_in;
sktclt =  WSASocket(AF_INET,SOCK_STREAM,0,NULL,0,0);
if(sktclt == INVALID_SOCKET)
{
return 0;
}
socket_in.sin_family = AF_INET;
socket_in.sin_port = htons(8080);
socket_in.sin_addr.S_un.S_addr = inet_addr(cs_serip);int con_res = connect(sktclt,(struct sockaddr*)&socket_in,sizeof(socket_in));
if(con_res == SOCKET_ERROR)
{
//失败
closesocket(sktclt);
WSACleanup();
return 0;
}
B线程中的sktclt,是一个全局的socket.我程序里面有一个全局的函数,供A调用fdata(SOCKET clis, char buff[256])
{
::send(sktclt, buff,256,0) ;
char buffS[256];
int nRecv = ::recv(sktclt, buffS, 256, 0);
if(nRecv > 0)
{
::send(clis, buff,1024,0) ;
}

问题1:如果有N个(上千个)B同时向D发送信息,会不会造成网络堵塞问题,如果会,应该如何解决,
问题2:D能同时连接多个客户端