当前位置:  技术问答>linux和unix

请问这个程序(UDP)什么地方错了

    来源: 互联网  发布时间:2016-10-09

    本文导语:  //udpser.c #include           /* These are the usual header files */  #include  #include           /* for bzero() */ #include          /* for close() */ #include   #include   #include   #include  #define PORT 1234   /* Port that will ...

//udpser.c
#include           /* These are the usual header files */ 
#include 
#include           /* for bzero() */
#include          /* for close() */
#include  
#include  
#include  
#include 

#define PORT 1234   /* Port that will be opened */ 
#define MAXDATASIZE 100   /* Max number of bytes of data */ 

main() 

int sockfd; /* socket descriptors */ 
struct sockaddr_in server; /* server's address information */ 
struct sockaddr_in client; /* client's address information */ 
int sin_size; 
int num;
char msg[MAXDATASIZE];  /* buffer for message */

/* Creating UDP socket  */
if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1)  {
/* handle exception */
perror("Creating socket failed.");
exit(1);
}

bzero(&server,sizeof(server));
server.sin_family=AF_INET; 
server.sin_port=htons(PORT); 
server.sin_addr.s_addr = htonl (INADDR_ANY); 
if (bind(sockfd, (struct sockaddr *)&server, sizeof(struct sockaddr)) == -1) { 
/* handle exception */
perror("Bind error.");
exit(1); 
}    

sin_size=sizeof(struct sockaddr_in); 
while (1)   {
num = recvfrom(sockfd,msg,MAXDATASIZE,0,(struct sockaddr *)&client,&sin_size);                                    

if (num h_addr);  /*he->h_addr passes "*he"'s info to "h_addr" */ 
sendto(fd, argv[2], strlen(argv[2]),0,(struct sockaddr *)&server,sizeof(struct sockaddr)); 

while (1) {
int len;
numbytes=recvfrom(fd,buf,MAXDATASIZE,0,(struct sockaddr *)&reply,&len);
if(numbytes == -1)
{  /* calls recvfrom() */ 
printf("recvfrom() errorn"); 
exit(1); 


if (len != sizeof(struct sockaddr) || memcmp((const void *)&server, (const void *)&reply,len) != 0) {
printf("Receive message from other server.n");
continue;
}

buf[numbytes]='';
printf("Server Message: %sn",buf); /* it prints server's welcome message */
break;
}

close(fd);   /* close fd */ 
}


操作过程:打开两个终端,
终端1运行 ./udpser
终端2运行 ./udpcli 127.0.0.1 hello

然后,
终端1显示:You got a message (hello) from 127.0.0.1
终端2显示:recvfrom() error
(如果一切正常的话,终端2应该显示:Server Message: Welcome to my server. 这是为什么?)

这是一个UDP的服务器程序和客户端程序(一本书上的例子),
不知为什么,客户端向服务器传信息成功了,服务器向客户端传信息却失败了
请大家帮我看一下这个程序到底是什么地方错了,还是我的电脑(Ubuntu 10.04)设置错了

|
 int len; //这里没有初始化

    
 
 

您可能感兴趣的文章:

  • 请问各位大虾,什么地方有Jsp学习资料?
  • 请问什么地方能下载到 UnixWare7.1.1
  • 请问各位大虾:“在什么地方能下栽到JDBC?,
  • 请问在什么地方可以下载acrobat中文字体支持包呢?谢谢!
  • 请问那2byte到什么地方了?
  • 请问登陆的日志放在什么地方?
  • 请问:怎么提取标准输出(stdout)的内容到别的地方显示?
  • 请问各位大虾,.jar文件应该放在什么地方才能调用,进者给分
  • 请问SCJP该怎么报名阿?在什么地方报?有些什么手续阿?谢谢了!
  • 请问什么地方有jsp论坛的源码下载?
  • 请问JRun Studio中如何新建Bean文件?我找不到地方.
  • 请问SL-275中英文有哪地方下载
  • 请问什么地方有IBM VisualAge for Java下载(最新版)
  • 请问:哪里有下载Visibroker for java?我找到了两个地方,但是无法下载?(在线等待)
  • 请问redhat 8.0中ipchains或ipctables命令在什么地方?(等待中)
  • 请问MYSQL 创建的数据库在什么地方(路径)我用的是REDHAT7。3并用RPM安装
  • 请问我登陆FTP后用get命令保存的文件放在什么地方,如何更改它的默认保存路径?
  • 请问什么地方有gcc-3.2.2的rpm包下载?
  • 请问:初学JAVA,需要把精力放在些什么地方?
  • 请问Redhat 9.0的自带游戏的源代码在什么地方?
  • 为什么linux下的C++程序这么少见? 请问那里有linux下的C++程序?什么类型的程序都可以.
  • 请问linux下查看某个程序的运行界面的程序是什么?
  • 急!请问有分析java程序性能瓶颈的工具吗?例如,统计 java 程序中函数调用次数?
  • 请问如何设置驱动程序和应用程序的启动顺序和优先级呢?
  • 请问载linux下如何调试汇编程序,有没有像debug的程序。
  • 请问如何在一个java程序中加载 C或c++程序??
  • 请问大家,gnome下的程序与KDE下的程序有何区别?
  • 请问shell 开发能开发什么样的程序?硬件的驱动程序是否能够开发呢?
  • 请问怎么在C程序中得到该可执行程序的文件名???
  • 请问能否在linux实现一个应用程序访问另外一个程序的内存数据?
  • 请问:哪种工具可以制作安装程序,安装程序是基于java的或是能在aix运行?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问:我知道路由器的telnet密码,但忘记了enable 密码,请问如何是好?
  • 请问那里有SYBASE的jbdb 2.0下载;jspsmartupload可以直接将文件上传到数据库,请问如何使用
  • 请问最新的reahat9.0是基于什么核心的?2.4?2.6?请问那里能下载?
  • 请问:请问哪里有关于linux基本操作命令讲解的资料下载,最好是幻灯片格式的.
  • 请问,我试图用#admintool&图形工具命令来安装sun workshop5.0,为什么进入的却是用户管理界面?请问具体该如何在solaris下安装应用软件
  • 请问在Redhat 9里,我从登录就是图形介面,请问如何在图形介面内进入命令行方式呢,谢谢
  • 请问玩过SOLARIS的高手门,在不正常关机后,就不能启动到windows公用桌面了,只能在命令提示模式下了,请问怎么解决这个问题啊?急~!~!
  • 请问:我在redhat下装了bochs-2.2.1-1.rpm,.装了后,想设置一下,但找不到bochsrc.fda.bxrc,请问这个文件在哪个曰录下啊。
  • 请问:在配置Qt时,很多文档都说在.profile,.login里加东西,但是我好像没有发现有这两个文件上,请问这些文件在哪个目录下啊
  • 请问:在GCC里的C程序里的变量的声明是不是只能在前面,而且相同类型的变量的声明只能放在一起?如果不是,请问怎么样可以解决这个问题.
  • 请问各位大虾,小弟今天开始学jsp了,这学期我们有java课,所以已经下载了jdk(好象是1.2),请问我的98环境怎么配置jsp环境呀?我的jdk可以运行.java程序,别的我就不知道了....谢谢!
  • 主机是WIN2000,我用的是LUNIX,请问是否可以共享上网? 如果可以请问如何设置? 500分答谢,龟儿食言!
  • 请问linux下GUI开发的问题!
  • 请问出现fstab文件丢失该怎么修复呀?
  • 请问这个方法如何调用?
  • 请问一个奇怪的问题!
  • 请问在网页中打开的新窗口,如何让其居中。
  • 请问我该学什么了
  • 主机是WIN2000,我用的是LUNIX,请问是否可以共享上网? 如果可以请问如何设置? 500分答谢,龟儿食言! iis7站长之家
  • 非常急! 请问daemontools 在red hat 9下的安装问题? 在线等待


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3