创建套接字我缺少什么?

时间:2012-08-01 16:04:29

标签: c++ sockets

我正在尝试用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

2 个答案:

答案 0 :(得分:2)

您缺少一些标题。

根据this manpagestruct sockaddr_un位于sys/un.h

答案 1 :(得分:2)

正如错误所说,您使用的是未声明的名称(serverSockAddrPtrserverLen)。你想要的是serverAddress结构的地址尺寸

bind (serverFd, 
      reinterpret_cast<sockaddr const *>(&serverAddress), 
      sizeof serverAddress);