C 绑定失败,参数错误无效
这是最后一段代码,没有编译错误,但我仍然收到“无效参数”错误强> ======================================================================== 包括C 绑定失败,参数错误无效,c,sockets,binding,C,Sockets,Binding,这是最后一段代码,没有编译错误,但我仍然收到“无效参数”错误 ======================================================================== 包括 使用名称空间std; #包括 #包括 #包括 #包括 #包括 #包括 #包括 #包括 #包括 内部主(内部argc、字符**argv、字符**envp){ int x25_插座; 结构sockaddr_x25x25_address={0}; char x25_主机[]=“10.0.0.
使用名称空间std;
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
内部主(内部argc、字符**argv、字符**envp){
int x25_插座;
结构sockaddr_x25x25_address={0};
char x25_主机[]=“10.0.0.1”;
const char name[]=“我的名字”;
x25_address.sx25_family=AF_x25;
x25_插座=插座(AF_x25,插座序列包,0);
如果(x25_插槽==-1)
cout假设这是C(正如@Doorknob指出的(+1)),这有两个编译错误。请修复它们。例如,同一变量名的两部分之间有一个空格。因此,下面几行:
int x25 socket;
struct sockaddr x25 address;
int x25 length;
char x25 host[]
应该是:
int x25_socket;
struct sockaddr_x25 x25_address;
int x25_length;
char x25_host[]
除此之外,我没有发现bind()本身存在任何逻辑缺陷。请尝试以下方法:
int main(int argc, char **argv, char **envp)
{
struct sockaddr_x25 x25_address = {0};
char x25_host[] = "10.0.0.1"
const char name[] = "my name";
int x25_socket = socket(AF_X25, SOCK_SEQPACKET, 0);
if(x25_socket == -1)
{
printf(" error in create socket");
}
x25address.safamily = AF_X25;
strncpy(x25_address.sx25_addr.x25_addr, x25_host, 16);
int bindNumber = bind(x25_socket, (struct sockaddr*)&x25_address, sizeof(x25_address));
if (bindNumber == -1)
{
perror("error in bind ---");
}
return 0;
}
什么编程语言?您的代码不编译,但您不需要在字符串文本中指定尾随null。编译器为您提供免费的。sockaddr\u in
仅用于AF\u INET
。对于AF\u X25
,您必须使用sockaddr\u X25
。因此,在OP的代码中,struct sockaddr X25 a地址
可能是struct sockaddr\u x25地址
而不是struct sockaddr x25\u地址
。“应该是”答案中的部分仍然是sockaddr
,需要改为sockaddr\u x25
。它们不是同一个结构。我为您修复了它。编译错误!!41:错误:请求“x25\u地址”中的成员“x25\u addr”。sockaddr\u x25::sx25\u family”,这是非类类型的“sa\u family\t”,对不起,我的拼写错误。sx25\u系列
应为sx25\u地址
。
int main(int argc, char **argv, char **envp)
{
struct sockaddr_x25 x25_address = {0};
char x25_host[] = "10.0.0.1"
const char name[] = "my name";
int x25_socket = socket(AF_X25, SOCK_SEQPACKET, 0);
if(x25_socket == -1)
{
printf(" error in create socket");
}
x25address.safamily = AF_X25;
strncpy(x25_address.sx25_addr.x25_addr, x25_host, 16);
int bindNumber = bind(x25_socket, (struct sockaddr*)&x25_address, sizeof(x25_address));
if (bindNumber == -1)
{
perror("error in bind ---");
}
return 0;
}