我正在尝试用C创建一个客户端/服务器,这是我的第一个C编程学习,我想只通过localhost连接,而不是通过互联网连接,我缺少什么。我如何修复它并让我的服务器启动并运行,我应该键入什么来让我的客户端连接到我的服务器。
我需要创建一个可以通过客户端发送和接收的服务器。对不起,我是C程序的新手,只是在学习阶段,请原谅我缺乏经验,并希望向专家学习。
以下是我在主
中的代码#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/un.h>
#include <sys/types.h>
#include <sys/socket.h>
using namespace std;
int main()
{
int serverFd;
int clientFd;
struct sockaddr_un serverAddress;
cout << "" << endl;
cout << "Running server program 'css' ...... " << endl;
cout << "" << endl;
// SOCKET CREATION PART - SERVER
serverFd = socket (AF_LOCAL, SOCK_STREAM, 0);
/* Set domain type */
serverAddress.sun_family = AF_LOCAL;
/* Set name */
strcpy (serverAddress.sun_path, "Server");
/* Remove file if it already exists */
unlink ("Server");
/* Create file */
bind (serverFd, serverSockAddrPtr, serverLen);
// SOCKET CREATION END - SERVER
return 0;
}
我得到错误:
CountryServer.c:39:17: error: ‘serverSockAddrPtr’ was not declared in this scope
CountryServer.c:39:36: error: ‘serverLen’ was not declared in this scope
答案 0 :(得分:2)
您缺少一些标题。
根据this manpage,struct sockaddr_un
位于sys/un.h
。
答案 1 :(得分:2)
正如错误所说,您使用的是未声明的名称(serverSockAddrPtr
和serverLen
)。你想要的是serverAddress
结构的地址和尺寸:
bind (serverFd,
reinterpret_cast<sockaddr const *>(&serverAddress),
sizeof serverAddress);