客户端/服务器套接字通信(AF_UNIX)

 aaaa 发布于 2023-02-11 16:24

我正在尝试编写一个客户端程序和一个服务器程序,当客户端连接到服务器时,服务器会将文件中的随机字符串发送回它.这是我到目前为止(从文件中省略):

server.c
#include 
#include 
#include 
#include 
#include 
#include 
#include 

int listfd;
int connfd;

int main(int argc, char *argv[]){

    /*
    * Create Sockets
    */
    listfd = socket(AF_UNIX, SOCK_STREAM, 0);
    if(listfd == -1)
        exit(-1);

    struct sockaddr saddr = {AF_UNIX, "server"};
    socklen_t saddrlen = sizeof(struct sockaddr) + 6;
    bind(listfd, &saddr, saddrlen);

    listen(listfd, 10);

    fflush(stdout);
    printf("Running...\n");

    /*
    * Listen for connections
    * and send random phrase on accept
    */
    while(1){
        connfd = accept(listfd, NULL, NULL);

        int r = rand() % num_of_lines; //Pick random phrase/hint pair
        write(connfd, phrases[r], strlen(phrases[r]));

        close(connfd);
        sleep(1);
    }

    exit(0);
}
client.c
#include 
#include 
#include 
#include 
#include 
#include 
#include 

int main(int argc, char *argv[])
{
    int sock;
    int conn;

    struct sockaddr saddr = {AF_UNIX, "server"};
    socklen_t saddrlen = sizeof(struct sockaddr) + 6;

    sock = socket(AF_UNIX, SOCK_STREAM, 0);

    conn = connect(sock, &saddr, saddrlen);

    char BUFF[1024];

    read(sock, BUFF, 1024);

    printf("%s", BUFF);

    return 0;
}

当我尝试在客户端打印时出现问题.我运行服务器,但是当我运行客户端时,它只打印垃圾字符,我不完全确定是什么导致了这一点.

非常感谢任何帮助,谢谢!

编辑:

我想出了我的问题.因为服务器套接字绑定到"服务器",这也是可执行文件的名称,这导致了很多问题.

重命名sockaddr.sa_data字段修复了我的问题.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有