永发信息网

LINUX下socket的通信问题,如何让SEND函数立刻发送数据?

答案:1  悬赏:0  手机版
解决时间 2021-08-17 12:18
#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’

最佳答案
以下是简单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;}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
为什么人不可以开心的过每一天呢?
身体不舒服。我好难受
对父亲那不容争辩的声音中,我清楚地知道,父亲
浉河区信阳荣事达厨卫生活.体验家在什么地方
E72的手机QQ游戏大厅无法打开。
我记得有一个单机游戏 是一个球闯关,可以变
宝宝便便是否正常
NO LOVE NO CRY是什么意思
吃辣椒浑身痒什么原因
+10墨竹能卖多少
求三星GTB 3410 主题下载!!!
在括号里填上合适的带分数
有什么搞笑的宠物名称?
穿越火线里幽灵模式中有的幽灵下蹲慢跳怎么一
夏普SH0902C怎么设置网络和发彩信能上QQ吗?
推荐资讯
古人描写九寨沟诗句,描写九寨沟山水的诗句
那个谁谁谁长的那么像潘帅,是不是故意整他潘
桃花源记花钱吗,桃花源记多少级有光武
那么恨他为什么
替宠物征婚?可以不?
电脑重装后怎么装视频??
古人用英语怎么说,古人用英语咋说
猫用久了会影响网速吗,宽带猫影响网速吗? 80
吉首市湘西中国移动(三中特约代理点)在什么地
夏天没电,该怎么活
QQ三国为什么有人有那么多齐心
世界上有几个厕所呀?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?