connect()中的协议不支持地址族
下面的代码是TCP客户端的套接字编程示例 但当我运行此程序时,connect()将作为协议不支持的地址族重新调整。 我正在尝试通过套接字进行服务器-客户端通信。 首先我们向客户端发送一些字符串,然后从客户端读取一些字符串并打印出来connect()中的协议不支持地址族,c,sockets,unix,C,Sockets,Unix,下面的代码是TCP客户端的套接字编程示例 但当我运行此程序时,connect()将作为协议不支持的地址族重新调整。 我正在尝试通过套接字进行服务器-客户端通信。 首先我们向客户端发送一些字符串,然后从客户端读取一些字符串并打印出来 #include<stdio.h> #include<sys/types.h> #include<sys/socket.h> #include<sys/un.h> #define ADDRESS "mysocke
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<sys/un.h>
#define ADDRESS "mysocket"
char *str[3]={"dfgff","trer","ytt"};
int main()
{
char c;
FILE *fp;
register int i,s,ns,len;
int fromlen;
struct sockaddr saun,fsaun;
if((s=socket(AF_UNIX,SOCK_STREAM,0))<0)
{
perror("server:socket");
exit(1);
}
unlink("mysocket");
if (bind(s,&saun,sizeof(saun))<0)
{
perror("server: bind");
exit(1);
}
if (listen(s, 5) < 0)
{
perror("server: listen");
exit(1);
}
if ((ns = accept(s, &fsaun, NULL)) < 0)
{
perror("server: accept");
exit(1);
}
fdopen(ns, "r");
/*
* First we send some strings to the client.
for (i = 0; i <3 ; i++)
send(ns, str[i], strlen(str[i]), 0);
/*
* Then we read some strings from the client and
* print them out.
*/
for (i = 0; i <3; i++)
{
while ((c = fgetc(fp)) != EOF)
{
putchar(c);
if (c == '\n')
break;
}
}
close(s);
exit(0);
return 0;
}
#包括
#包括
#包括
#包括
#定义地址“mysocket”
char*str[3]={“dfgff”、“trer”、“ytt”};
int main()
{
字符c;
文件*fp;
寄存器int i、s、ns、len;
int fromlen;
结构sockaddr saun,fsaun;
如果((s=socket(AF_UNIX,SOCK_STREAM,0))您的代码中有未定义的行为,因为您在使用结构之前没有初始化它们(主要示例:在调用bind
时没有初始化它,您就使用saun
)。还有更多这样的问题。我没有看到对connect()的任何调用
。显示的代码看起来像服务器代码,而不像客户端。OT:c
应该声明为int
而不是char
。这看起来像服务器代码。connect
在哪里?事实上,您已经拥有了bind
、listen
和accept
的所有功能。