小编net*_*rks的帖子

客户端/服务器通信中的中间件

我正在用C++构建一个客户端/服务器对,我用它winsock来进行通信.但是,我无法在C++中找到任何可以实现某些内容的库,而不是直接从客户端向服务器发送请求,而是存储请求,稍后将与服务器进行通信.

有没有任何方法或库可以将请求发送到像经纪人这样的东西,反之亦然?将存储请求的东西,然后将与服务器通信.这些是我已经使用的库:

#pragma comment( linker, "/defaultlib:ws2_32.lib")
#include <WinSock2.h>
#include <winsock.h>
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <windows.h>
#include <ws2tcpip.h>
#include <fstream>
using namespace std;

#define HOSTNAME_LENGTH 20
#define RESP_LENGTH 40
#define FILENAME_LENGTH 20
#define REQUEST_PORT 5001
#define BUFFER_LENGTH 1024 
#define TRACE 0
#define MSGHDRSIZE 8 //Message Header Size
Run Code Online (Sandbox Code Playgroud)

client-server winsock visual-c++ broker

7
推荐指数
1
解决办法
616
查看次数

socket编程中的select()c ++总是给出时间错误

我有这个套接字程序,它有发送和接收的两个部分,但当我使用选择它总是返回"时间错误".这是代码

void server::run(){
int RetVal;
    struct timeval *tp=new timeval;
    tp->tv_sec=300;
    tp->tv_usec=500000;
    fd_set readfds;
    FD_ZERO(&readfds);
    FD_SET(sock,&readfds);
    FD_SET(sock1,&readfds);
    cout<<"run() is working fine";
    if((RetVal=select(1,&readfds,NULL,NULL,tp))==SOCKET_ERROR)  //check for incoming packets.
                {
                    cout<< "Timer error!";
                    Sleep(50);
    }
    else if(RetVal>0)   //There are incoming packets.
            {
           if(FD_ISSET(sock1, &readfds))    //incoming packet from peer host 1
         {
           send();
          }
            else if(FD_ISSET(sock, &readfds))   //incoming packet from peer host 1
           {
              send1();
          }
         else{
            cout<<"no port is open to communicate";
         }
}
}

server::server(){
WSADATA wsadata;
try{
    if (WSAStartup(0x0202,&wsadata)!=0)
        throw"Starting WSAStartup() error\n"; …
Run Code Online (Sandbox Code Playgroud)

c++ sockets select

1
推荐指数
1
解决办法
1498
查看次数

标签 统计

broker ×1

c++ ×1

client-server ×1

select ×1

sockets ×1

visual-c++ ×1

winsock ×1