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

socket程序类似长连接问题!

    来源: 互联网  发布时间:2016-06-29

    本文导语:  从客户端两次调用send函数,但是却只能收到第一条,请问为什么,代码如下。 客户端: main() {    char   pSndPort[]="7666";    char   pSndIp[]="127.0.0.1";    struct sockaddr_in srvaddr;    iSktID=socket(AF_INET,SOCK_STREAM,0);   ...

从客户端两次调用send函数,但是却只能收到第一条,请问为什么,代码如下。
客户端:

main()
{
   char   pSndPort[]="7666";
   char   pSndIp[]="127.0.0.1";
   struct sockaddr_in srvaddr;

   iSktID=socket(AF_INET,SOCK_STREAM,0);
   bzero(&srvaddr,sizeof(srvaddr));
   srvaddr.sin_family=AF_INET;
   srvaddr.sin_port=htons(atoi(pSndPort));
   srvaddr.sin_addr.s_addr= inet_addr(pSndIp);

   connect(iSktID,(struct sockaddr *)&srvaddr,sizeof(struct sockaddr));
   XmlSnd2Cis();
   close(iSktID);
}
XmlSnd2Cis()
{
   send(iSktID, "i love you", sizeof("i love you"), 0);
   send(iSktID, "zsl", sizeof("zsl"), 0);
}



服务端:

main()
{
   int    nListenSock = 0, nSock = 0;
   int    nPort = 7666;
   pid_t  iPid;
   signal(SIGCHLD,SIG_IGN); 
   CreateSock(&nListenSock, nPort, 8); 
   AcceptSock(&nSock, nListenSock);
   while(1)
   { XmlRecv4Cis(nSock); }
}

int CreateSock(int* pSock, int nPort, int nMax)
{
   struct sockaddr_in addrin;
   memset(&addrin, 0, sizeof(addrin));

   addrin.sin_family = AF_INET;
   addrin.sin_addr.s_addr = htonl(INADDR_ANY);
   addrin.sin_port = htons(nPort);

   *pSock = socket(AF_INET, SOCK_STREAM, 0);
   bind(*pSock, (struct sockaddr *)&addrin, sizeof(addrin));
   listen(*pSock, nMax);              
}


int AcceptSock(int* pSock, int nSock)
{
   struct sockaddr_in addrin;
   int lSize;

   while (1)
   {
  lSize = sizeof(addrin);
  memset(&addrin, 0, sizeof(addrin));

  if ((*pSock = accept(nSock, (struct sockaddr *)&addrin, &lSize)) > 0)
     return 0;
   }
}

XmlRecv4Cis(int nSock)
{
   char   buf[100];
   bzero(buf, sizeof(buf));
   if(recv(nSock, buf, sizeof(buf), 0) 

    
 
 

您可能感兴趣的文章:

  • help! JAVA下有类似VC++ 下的socket 类吗?请各位高手看一下!!
  • 两个 Socket 互相通信,其中一个如何判断另一个 Socket 是否已经意外断开了连接?
  • socket 断开连接如何再恢复连接
  • 什么是socket的长连接,以及如何实现长连接,长连接和短连接有什么区别?
  • kjava能不能通过socket连接服务器
  • socket 连接问题(不要见笑)
  • 如何跨网段进行socket连接
  • socket连接建立,收不到告警的情况?netstat结果如下
  • 服务器与客户端建立socket连接,如何获得端口号.谢谢
  • ftp连接出现socket错误=#10054的解决方法
  • 如何清楚linux系统中以退出程序的socket连接?
  • Socket连接的时间不能控制??请帮小妹
  • http连接,服务器端关闭socket
  • 请问javaBean能不能进行非本机的socket连接
  • 200分求问j2me里如何建立socket连接?
  • Linux下的Socket通信如何断开连接的端口从而实现重复使用该端口
  • 一个进程打开的socket长连接能否达到10000个
  • socket怎样限制客户端连接数?
  • 关于LINUX SOCKET连接CPU占用问题
  • SOCKET调用close断开连接的时候回主动发FIN ACK包吗?
  • SOCKET 长连接
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • IOS开发之socket网络编程(基于SimpleNetworkStreams的c/s程序)
  • 我的ping程序怎么老是出现Socket operation on non-socket
  • linux客户端程序能否和windows端的服务器程序进行socket通信?
  • socket客户端程序的问题
  • 请教: linux下用c++写最简单的socket程序如何写?
  • 把socket客户端程序和服务端程序放在同一机器上运行,可以吗?
  • 求助:我的第一个 socket 程序,缺少某些结构的定义
  • gdb 怎么调试socket程序
  • socket程序中,查看error需要什么头文件?
  • 我断开socket服务器日志之后,服务器程序就挂死啦
  • 基于socket的linux和Windows通信程序为什么运行特别慢?
  • 我用单机编译socket和ServerSocket程序,我应该怎样对自己的机器进行设置?
  • 请问如何在linux下用gcc调试socket程序???
  • linux下socket模拟telnet功能的程序,急求
  • 如何在redhat e4下用gcc编译socket程序,(-lsocket无法使用啊)!急,在线等
  • 多线程socket程序莫名其妙接收到SIGALRM信号问题。
  • linux socket程序,出现closed by peer问题
  • 写socket程序的时候,都需要注意哪些信号?
  • 大家一起讨论一下这个程序设计(关于socket实现http协议)。
  • 要编写一个后台的socket通讯程序,各位有没有什么好的建议?
  • 求FTP客户端源程序(Ansi C, Berkeley Socket)
  • java命名空间java.net类socket的类成员方法: socket定义及介绍
  • re socket编程中 ACCEPT返回的socket与原socket(他参数中的)端口号一样吗?
  • java命名空间java.nio.channels类socketchannel的类成员方法: socket定义及介绍
  • libevent2需要从socket读一段数据写入一个socket中,同时发送给另一个socket
  • java命名空间java.nio.channels类serversocketchannel的类成员方法: socket定义及介绍
  • socket 通讯开发包 Simple Sockets
  • java命名空间java.nio.channels类datagramchannel的类成员方法: socket定义及介绍
  • C++ Socket 库 C++ Sockets
  • java命名空间java.net类socket的类成员方法: getsendbuffersize定义及介绍
  • vc做的的socket应用和unix下socket?


  • 站内导航:


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

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

    浙ICP备11055608号-3