LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 707|回复: 8

客户机服务器模型本机测试的问题

[复制链接]
发表于 2005-3-17 08:20:58 | 显示全部楼层 |阅读模式
按照教程编写了一个客户机服务器模型 可是在本机测试的时候 客户机程序提示说“管道不存在”,我是新手,希望高手指点一下什么原因
发表于 2005-3-17 08:41:10 | 显示全部楼层
你的程序是否用到管道?你是否忘记了创建管道?

你给的信息太少了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-17 08:49:06 | 显示全部楼层
我的程序中没有创建管道,我是严照教程编写的,只是省略了出错检验,刚开始学习LINUX下编程,许多常识性的东西还不知道,望包涵。源码如下:

  1. /*
  2. client.c
  3. */
  4. #include <stdio.h>
  5. #include <sys/socket.h>
  6. #include <netinet/in.h>
  7. #include <arpa/inet.h>
  8. #include <netdb.h>

  9. char * hostname="127.0.0.1";
  10. int port=7999;
  11. int main(int argc,char *argv[]){
  12. char buf[8192];
  13. char message[256];
  14. int socket_desc;
  15. struct sockaddr_in pin;
  16. struct hostent *server_host_name;
  17. char * str="a default test string";

  18. server_host_name=gethostbyname(hostname);
  19. bzero(&pin,sizeof(pin));
  20. pin.sin_family=AF_INET;
  21. pin.sin_addr.s_addr=htonl(INADDR_ANY);
  22. pin.sin_addr.s_addr=((struct in_addr *)(server_host_name->h_addr))->s_addr;
  23. pin.sin_port=htons(port);
  24. socket_desc=socket(AF_INET,SOCK_STREAM,0);
  25. printf("kaishi connect\n");
  26. if(connect(socket_desc,(struct sockaddr *)&pin,sizeof(pin))==(-1))    {printf("ohyear!\n");}
  27. printf("zhunbei fashe\n");
  28. send(socket_desc,str,strlen(str),0);
  29. printf("sent\n");
  30. recv(socket_desc,buf,8192,0);
  31. printf("get:\n%s\n",buf);
  32. close(socket_desc);
  33. }
复制代码
回复 支持 反对

使用道具 举报

发表于 2005-3-17 08:54:24 | 显示全部楼层
贴代码的时候前后分别加 \[code\]  和 \[/code\]保持格式(不要“\”)。

只看客户端的代码也不好判断,你的程序可能是服务器端问题或者服务器根本没有运行。

你用的“管道”一词不太恰当吧?

如果你还不懂这段代码的意思,就先不要抄这个程序了。

网络编成,推荐看“UNIX网络编程”或“用TCP/IP实现网际互连,第三卷”。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-17 08:55:59 | 显示全部楼层
晓得了,可是我的问题。。。。?
回复 支持 反对

使用道具 举报

发表于 2005-3-17 09:01:13 | 显示全部楼层
我上面的回帖更新了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-17 09:06:25 | 显示全部楼层
我学习过在WIN下的网络编程,也写过一些程序。而且服务器我用浏览器测试过,能够把我发送的请求换成大写反馈回来,问题应该是出在客户端上。我估计可能是因为我缺少LINUX下编程的常识。
还有,当时提示的似乎是“通道”而不是“管道”。。。。
我汗
回复 支持 反对

使用道具 举报

发表于 2005-3-17 09:19:50 | 显示全部楼层
在使用gethostbyname,socket等函数的时候为什么不测试返回值,你确认这些函数都是执行成功的吗?

pin.sin_addr.s_addr 为什么连续赋了两次值,而且不同?

先把你的程序理清楚,估计到那时你的问题也解决了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-17 09:33:07 | 显示全部楼层
OK
我尝试一下。
谢谢点拨
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表