我搞了一个很简单的聊天室不知道该如何实现用户一对一聊天呢?
使用的API套接字  和异步线程!
不知道该如何才能够做到实现用户一对一的聊天呢?
谢谢说一下下思路即可!

解决方案 »

  1.   

    两个主机间用SOCKET连接不就好了啊
      

  2.   

    tcp,socketstruct sockaddr_in pin;
    struct hostent *nlp_host;
    int sd; 
    char host_name[256];
    int port;//初始化主机名和端口。主机名可以是IP,也可以是可被解析的名称
    strcpy(host_name,"www.linux-wiki.cn");
    port=80;//解析域名,如果是IP则不用解析,如果出错,显示错误信息
    while ((nlp_host=gethostbyname(host_name))==0){
    printf("Resolve Error!\n");
    }
    //设置pin变量,包括协议、地址、端口等,此段可直接复制到自己的程序中
    bzero(&pin,sizeof(pin));
    pin.sin_family=AF_INET; //AF_INET表示使用IPv4
    pin.sin_addr.s_addr=htonl(INADDR_ANY); 
    pin.sin_addr.s_addr=((struct in_addr *)(nlp_host->h_addr))->s_addr;
    pin.sin_port=htons(port);//建立socket
    sd=socket(AF_INET,SOCK_STREAM,0);//建立连接
    while (connect(sd,(struct sockaddr*)&pin,sizeof(pin))==-1){
    printf("Connect Error!\n");
    }服务器端程序
    本段是C++代码。 int serverSocket;
    struct sockaddr_in serverAddr;
    struct sockaddr_in clientAddr;// 用port保存使用的端口
    int port=8000;// 建立Socket,并设置
    serverSocket = socket(AF_INET, SOCK_STREAM, 0);// 设置socket选项,这是可选的,可以避免服务器程序结束后无法快速重新运行
    int val=1;
    setsockopt(serverSocket, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val));// 定义端口和监听的地址
    serverAddr.sin_family = AF_INET;
    serverAddr.sin_port = htons(port);
    serverAddr.sin_addr.s_addr = htonl(INADDR_ANY);
    memset(&(serverAddr.sin_zero), 0, 8);
    int rc = bind(serverSocket, (struct sockaddr*) &serverAddr,
    sizeof(struct sockaddr));
    if (rc == -1) {
    printf("Bad bind\n");
    exit(1);
    }// 让serverSocket开始监听,客户队列长为5
    rc = listen(serverSocket, 5);
    if (rc == -1) {
    printf("Bad listen\n");
    exit(1);
    }// 等待客户连接
    int sock;
    int clientAddrSize = sizeof(struct sockaddr_in);
    sock = accept(serverSocket,
    (struct sockaddr*) &clientAddr,
    (socklen_t*) &clientAddrSize);