#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <unistd.h>
#include <sys/sendfile.h>
//以下头文件是为了使样例程序正常运行
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
int sockfd;
int len;
struct sockaddr_un address; // 这是24行
int result;
char ch[]="A";
sockfd=socket(AF_UNIX,SOCK_STREAM,0);
address.sun_family=AF_UNIX;
strcpy(address.sun_path,"server_socket");
len=sizeof(address);
result=connect(sockfd,(struct sockaddr *)&address,len);
if(result==-1){
perror("oops:client1");
exit(1);
}
write(sockfd,&ch,1);
read(sockfd,&ch,1);
printf("char from server=%s\n",ch);
close(sockfd);
exit(0);
}
lizi1.c: In function ‘main’:
lizi1.c:24: error: storage size of ‘address’ isn’t known
问题补充:最后两行是出现的问题·····哪位知道如何改动?谢谢!!在线等!!
按照enochwills说法还是不对···
改了之后这是新的错误提示:
lizi1.c: In function ‘main’:
lizi1.c:28: error: ‘struct sockaddr_in’ has no member named ‘sun_family’
lizi1.c:29: error: ‘struct sockaddr_in’ has no member named ‘sun_path’
而且就算把‘sun_family’‘sun_path’改成‘sin_family’‘sin_path’ 也不行,还是提示:
lizi1.c:29: error: ‘struct sockaddr_in’ has no member named ‘sun_path’
LINUX下socket的通信问题,如何让SEND函数立刻发送数据?
答案:1 悬赏:0 手机版
解决时间 2021-08-17 12:18
- 提问者网友:欲望失宠
- 2021-08-16 14:20
最佳答案
- 五星知识达人网友:轮獄道
- 2021-08-16 14:41
以下是简单socket通信的例子客户端代码:// client.c : 定义控制台应用程序的入口点。//#include <stdio.h>#include <string.h>#include <stdlib.h>#include <conio.h>#include <winsock2.h>#pragma comment(lib,"ws2_32.lib")int main() SOCKET clientsocket; if((clientsocket = ::socket(AF_INET,SOCK_STREAM,0)) == INVALID_SOCKET) sockaddr_in client; client.sin_family = AF_INET; client.sin_port = htons(5051); client.sin_addr.S_un.S_addr = htonl(INADDR_ANY); if(::bind(clientsocket,(sockaddr *)&client,sizeof(client)) == SOCKET_ERROR) sockaddr_in server; server.sin_family = AF_INET; server.sin_port = htons(5050); server.sin_addr.S_un.S_addr = inet_addr("172.19.36.8"); if(::connect(clientsocket,(sockaddr *)&server,sizeof(server)) == SOCKET_ERROR) printf("服务器连接成功"); while(1) else }while(count>0); } getch(); return 0;} 答案补充 // server.c : 定义控制台应用程序的入口点。//#include <stdio.h>#include <string.h>#include <stdlib.h>#include <conio.h>#include <winsock2.h>#pragma comment(lib,"ws2_32.lib")int main() 答案补充 // 创建socket SOCKET serversocket; serversocket = ::socket(AF_INET,SOCK_STREAM,0); if(serversocket == INVALID_SOCKET) 答案补充 // 绑定地址 sockaddr_in server; server.sin_family = AF_INET; server.sin_port = htons(5050); server.sin_addr.S_un.S_addr = htonl(INADDR_ANY); if(::bind(serversocket,(sockaddr *)&server,sizeof(server)) == SOCKET_ERROR) 答案补充 // 监听端口 if(::listen(serversocket,5) == SOCKET_ERROR) 答案补充 // 等待客户端连接 SOCKET clientsocket; sockaddr_in client; int clientlen = sizeof(client); clientsocket = ::accept(serversocket,(sockaddr *)&client,&clientlen); if(clientsocket == INVALID_SOCKET) printf("客户端连接成功!"); 答案补充 char buf[1024]; char *p_c; int count; int numchr; while(1) else }while(count>0); printf(%s\n",buf); } return 0;}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯