Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 网络套接字程序中的顶级错误_C_Sockets - Fatal编程技术网

C 网络套接字程序中的顶级错误

C 网络套接字程序中的顶级错误,c,sockets,C,Sockets,我正在编写一个程序来处理网络套接字,而不是unix套接字。我不确定是头文件还是函数和头文件的使用不正确。程序将向屏幕发送和打印消息,直到用户使用网络套接字输入“退出”。尝试编译这个服务器1会产生很多错误,即使我的客户端1编译了 更新 错误(“主要”和顶级错误): 服务器1(客户端1编译)的代码 #包括 #包括 #包括 #包括 //#是否在中包含//不再需要b/c,而不是unix? #包括 #包括 //添加这些帮助,但仍然存在错误 #包括 #包括 #定义端口50014 #定义len256 #定义套

我正在编写一个程序来处理网络套接字,而不是unix套接字。我不确定是头文件还是函数和头文件的使用不正确。程序将向屏幕发送和打印消息,直到用户使用网络套接字输入“退出”。尝试编译这个服务器1会产生很多错误,即使我的客户端1编译了

更新

错误(“主要”和顶级错误):

服务器1(客户端1编译)的代码

#包括
#包括
#包括
#包括
//#是否在中包含//不再需要b/c,而不是unix?
#包括
#包括
//添加这些帮助,但仍然存在错误
#包括
#包括
#定义端口50014
#定义len256
#定义套接字\u名称“服务器\u套接字”
内部主(空)
{
//有些可能不需要
char-buf[LEN];
int server_sockfd;
int client_sockfd;
socklen_u t client_len;
ssize_t num_client_字节;
服务器地址中的结构sockaddr\u;
客户端地址中的结构sockaddr\u;
//创造新的
server\u sockfd=socket(AF\u INET,SOCK\u STREAM,0);
如果(-1==server\u sockfd)
{
perror(“服务器--套接字失败”);
退出(退出失败);
}
//绑定新的
memset(&server_地址,0,sizeof(server_地址));
服务器地址.sin\u family=AF\u INET;
服务器\u socket.sin\u addr.s\u addr=0;
服务器地址sin\u addr.s\u addr=htonl(INADDR\u ANY);
服务器\地址.sin\端口=htons(端口);
strcpy(server_address.sun_path,SOCKET_NAME);//不确定是否需要
if(bind(server\u sockfd,(struct sockaddr*)和server\u地址,
sizeof(服务器地址)))
{
perror(“服务器--绑定失败”);
}
//创建连接q并等待客户端
如果(监听(服务器,5))
{
perror(“服务器--侦听失败”);
}
//宣布服务器正在等待客户端连接
放置(“服务器正在等待…”);
//接受连接
客户地址=sizeof(客户地址);
client_sockfd=accept(server_sockfd,(struct sockaddr*)和client_地址,
&客户(本地);;
//在这里循环并发送消息
//接近的东西
关闭(客户_sockfd);
关闭(服务器\u sockfd);
返回0;
}

您缺少Internet套接字标题:

#include <netinet/in.h>
#include <netinet/ip.h> 
#包括
#包括
添加

这意味着编译器看到的a应该替换为b。在您的代码中,您已经做了类似的事情

#define SOCKET_NAME "server_socket"
但是什么是服务器插座呢?您可能是指服务器地址,我在“绑定新的第三行”一节中得到这个客户

这是正确的语法

server_address.sin_addr.s_addr = 0;
还修复了宏(服务器\u套接字?)


这帮了大忙,但我还是犯了一些错误server_socket“未声明”和“struct sockaddr_in”没有名为“sin_path”的成员
sin_path
不是Internet套接字地址中的标准字段,这可能是您使用Unix套接字时留下的吗?我去掉了该部分,但仍有大量顶级(?)错误。可能需要重新检查手册页,看看是否涵盖了这些错误?
#include <netinet/in.h>
#define a b
#define SOCKET_NAME "server_socket"
server_socket.sin_addr.s_addr = 0;
server_address.sin_addr.s_addr = 0;
#define SOCKET_NAME "server_socket"