本关的编程任务是完成客户端的代码编写,补全右侧代码片段localsocket_test中Begin至End中间的代码,具体要求如下: 首先建立一个命名 socket ,指定地址为./socket_test; 连接 socket 成功后,发送消息(发送内容为 localsocket_test 中的参数 buffer)到服务端; 接收从服务端来的消息。关闭 socket ; 如果接收成功返回 0,接受失败返回 -1。#include <stdio.h> #include <unistd.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/un.h> int localsocket_test(const char *buffer, char *recv_buff, int length) { /*********begin***********/ /**********end************/ }
时间: 2023-07-19 12:57:07 浏览: 199
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
int localsocket_test(const char *buffer, char *recv_buff, int length) {
int sockfd = socket(AF_UNIX, SOCK_STREAM, 0);
if (sockfd < 0) {
perror("Error opening socket");
return -1;
}
struct sockaddr_un serv_addr;
memset(&serv_addr, 0, sizeof(serv_addr));
serv_addr.sun_family = AF_UNIX;
strcpy(serv_addr.sun_path, "./socket_test");
if (connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) {
perror("Error connecting to socket");
return -1;
}
int n = write(sockfd, buffer, strlen(buffer));
if (n < 0) {
perror("Error writing to socket");
return -1;
}
memset(recv_buff, 0, length);
n = read(sockfd, recv_buff, length - 1);
if (n < 0) {
perror("Error reading from socket");
return -1;
}
close(sockfd);
return 0;
}
阅读全文