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

请各位帮我看一下这个代码,关于socket客户端的问题

    来源: 互联网  发布时间:2016-03-26

    本文导语:  #define  PORT    38021 #define  DNS     "local"    main(argc, argv) int argc; char*argv[]; {      int fd;      struct sockaddr_in server;      char host[6];      struct hostent *hp;      int ret;            signal(SIGPIPE,S...

#define  PORT    38021
#define  DNS     "local"   

main(argc, argv)
int argc;
char*argv[];
{

     int fd;
     struct sockaddr_in server;
     char host[6];
     struct hostent *hp;
     int ret;
     
     signal(SIGPIPE,SIG_IGN);
     memcpy(host,DNS,5);
     host[5]='';
     if((hp=gethostbyname(host))==NULL)
     {
       perror("check DNS:%s !n");
       exit(-1);
     }
     int j;
     j=0;   
     if ((fd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
     {
       perror("Create TCP socket failed!n");
       exit(-1);
     }
     
     bzero(&server, sizeof(server));
     server.sin_family = AF_INET;
     server.sin_port = htons(PORT);
     server.sin_addr = *((struct in_addr *)hp ->h_addr);

     while(1)
      {
 if((ret=connect(fd, (struct sockaddr *)&server, sizeof(struct sockaddr)))==-1)
           { 
j++;
continue;
           }
         printf("connected!j=%d,ret=%dn",j,ret);  close(fd);     
      }
    return ;
}
注:上面这段程序,如果我的目的是为了客户端进程先起到话,可以在connect上面循环,直到server端进程起来。但是出现了问题(由于为了测试方面客户端和服务端都在同一台机器上,而且当时server端进程根本就没有起,使用netstat命令也可以看到根本没有38021端口的listen),当我不加while循环时connect马上就返回了:connection refuse了,所以我加了一个while循环,但每次程序一运行,客户端就显示connected!j=22585,ret=0.(j基本上都2万以上),而且netstat也显示tcp两个端口established了,可我的server端进行压根就没起啊,是不是意味着经过2万多次的连接,服务端被感动了,接受了客户端的追求?但想想还是不大可能,恳请各位帮我看看,程序是不是有问题啊。
    



|
你用netstat -anp看一下established的是哪两个进程,有可能刚好有个别的什么程序起来了,或者你的server端用另外的方式起来了,或者别人登录进来启动了你的server端,或者你的程序不完整,在其它地方启了server端,反正总之就是先看一下再说别的。服务端被感动了,还不如认为服务端被烦死了,哈。

|
signal(SIGPIPE,SIG_IGN); 
这个函数放在这里做什么呢,SIG_IGN函数的函数体也贴出来看看,会不会是有遇到SIGPIPE信号

|
SIG_IGN函数是忽略信号的意思.

    
 
 

您可能感兴趣的文章:

  • 关于ftp客户端的源代码?
  • 谁有linux下ftp客户端的源代码?
  • 如何调试多线程的代码? 多何调试网络代码 服务器的和客户端的
  • 有谁分析过Telnetd服务端的源代码吗?能否发给我一份笔记?或讲一下它的工作原理?
  • python client使用http post 到server端的代码
  • 在JB自己生成的EJB客户端的测试代码中都会自动生成,象String url = "t3://localhost:7001";这样的,请问:
  • 【关于Linux中判断大端小端的代码问题】
  • 求ftp客户端的源代码 unix环境
  • php实现socket实现客户端和服务端数据通信源代码
  • 如何用代码实现一个samba客户端??
  • andriod下java socket网络编程:java socket客户端服务端代码示例
  • 求助:Linux下ftp客户端代码编写
  • 特急!!!怎样用JAVA代码实现对web客户端用户licence管理(如:licence限定为5用户)
  • 谁知道:怎样用JAVA代码实现对web客户端用户licence管理(如:licence限定为5用户)
  • 请教各位大帅:jswdk中运行jsp,为何客户端浏览器无内容,查看原代码,就是原文件?
  • 求可编译的linux telnet客户端代码
  • 客户端 mmap 写文件,麻烦给点代码参考下,谢谢
  • 求 ftp客户端源代码
  • 求一份适合模仿学习的ftp客户端代码
  • (****非作业帖),求ftp客户/服务器c语言源代码.
  • 注意了!!100分求购java Telnet客户端代码!!!高手指点同样给分!!
  • 请教带定时器的,对高速运转的客户服务器(cs)系统的代码应该怎么调试。
  • java servlet获得客户端相关信息的简单代码
  • 登录远程桌面时遇到“由于客户端检测到一个协议错误(代码0x1104)”
  • 一个J2EE应用需要同客户端保持一个安全的(SSL/HTTPS)长连接,请问此部分的代码应该用什么J2EE component来实现,Session EJB or Servle
  • c# socket编程udp客户端实现代码分享
  • 急求助:linux下ftp客户端代码
  • asp.net按钮只执行客户端代码不回送页面的方法
  • 我的代码中已经假如smtp认证,为什么在tomcat上还提示客户端没有验证?使用smtp.sohu.com或smtp.sina.com.cn都不行代码如下:
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • javascript 添加到收藏夹和书签代码示例
  • 在JBuilder中,为什么编写的代码中,当代码出现关键字时,后面的部分代码就移位了,当在有关键字的那些代码行进行选择时,也会出现鼠标位
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • 为什么两行代码间不加入其他代码就崩溃,而加入了日志代码后就不崩溃?
  • JSP中清空cookie代码参考
  • 在ubuntu8.10 新立得中安装anjuta,为什么没有代码提示功能,怎么做才有,还有自动代码补全和代码提示有什么区别,
  • Python获取网页编码的方法及示例代码
  • 到底怎么样的代码算是有效代码?请教了。。
  • HTML网页中的html body onload自动跳转方法介绍及自动跳转代码示例
  • 如果要研究源代码以提高自己,哪一个开放源代码的软件比较合适?
  • php通过socket_bind()设置IP地址代码示例
  • linux源代码的时间函数源代码
  • boost库lexical_cast不同用法代码参考
  • gdb的时候代码 next显示的代码乱了
  • 通过javascript库JQuery实现页面跳转功能代码
  • 源代码!源代码!
  • 使用libpcap读取tcpdump抓取的文件并解析c代码实例
  • 哪位会使用代码保护工具WingGuard来保护java代码?
  • HTML网页的Meta Refresh自动跳转方法介绍及Meta Refresh自动跳转代码示例
  • 如何得到C语言代码对应的汇编代码?
  • Linux c++虚函数(virtual function)简单用法示例代码
  • RedHat Linux是开放源代码的吗?如何能看见它的源代码,如何进行修改?


  • 站内导航:


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

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

    浙ICP备11055608号-3