当前位置:  技术问答>php实现socket实现客户端和服务端数据通信源代码 iis7站长之家

客户端发送的socket数据,需要客户端断开连接之后服务器端才能受到,为何

    来源: 互联网  发布时间:2017-02-20

    本文导语:  android手机为服务器端,PC端软件为客户端 PC客户端通过socket发送数据给服务器端,服务器端一直接收不到数据,只有当PC客户端断开socket连接之后, 手机服务器端才接收到数据,请问是怎么回事?怎么处理,谢谢 代...

android手机为服务器端,PC端软件为客户端
PC客户端通过socket发送数据给服务器端,服务器端一直接收不到数据,只有当PC客户端断开socket连接之后,
手机服务器端才接收到数据,请问是怎么回事?怎么处理,谢谢
代码如下:
android 手机端linux(server)

int make_server_socket()
{
    int sockfd = socket(PF_INET, SOCK_STREAM, 0);
    struct sockaddr_in my_addr;
    memset(&my_addr, 0, sizeof(my_addr));
    my_addr.sin_family = AF_INET;
    my_addr.sin_port = htons(LISTENPORT);
    my_addr.sin_addr.s_addr = INADDR_ANY;

    if(sockfd>0)
    {
        int on = 1;
        setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
        if(bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr))==0)
        {
            if(listen(sockfd, 0)==0)
            {
                // No error
            }
            else
            {
                close(sockfd);
                sockfd = -3;
            }
        }
        else
        {
            close(sockfd);
            sockfd = -2;
        }
    }

    return sockfd;
}

int accept_socket(int sockfd)
{
    // Block until connections
    struct sockaddr_in peer_addr;
    unsigned int sin_size = sizeof(peer_addr);
    int new_fd = accept(sockfd, (struct sockaddr *)&peer_addr, &sin_size);
    return new_fd;
}

int recv_socket(int sockfd, void* buffer, int size)
{
int received = 0;

while (buffer && received  0)
{
received += result;
}
else
{
received = result;
break;
}
}
return received;
}
.............
    while (1)
    {
        listenfd = make_server_socket();
memset(receive_buffer,0,sizeof(receive_buffer));
        if (listenfd > 0)
        {
            while (1)
            {

                tcpipfd = accept_socket(listenfd);
                
                if (tcpipfd > 0)
                {
                    len=recv_socket(tcpipfd, recmsg, BUF_LEN_1024);
                }
                else
                {
                    break;
                }
sleep(1);
            }
            close_socket(listenfd);
        }
        sleep(2);
    }
............


java客户端:

    byte[] bs = new byte[] { (byte) 127, (byte) 0, 0, 1 };
    InetAddress addr = InetAddress.getByAddress(bs);
    pcsocket =new Socket(addr,port);

    sender=new BufferedOutputStream(pcsocket.getOutputStream(),20);
    receiver=new BufferedInputStream(pcsocket.getInputStream(),20);

        sender.write(data.getBytes(),0,data.length());
        sender.write('n');
        sender.flush();

|
你一直循环read,又写不足size个字节,while怎么退出?

只有

else
{
received = result;
break;
}退出才打印结果。

    
 
 

您可能感兴趣的文章:

  • java命名空间javax.print类docflavor的类成员方法:客户端格式化打印数据定义及介绍
  • 客户端程序与容器打交道时客户端用什么程序编写?比如银行添单。
  • php实现socket实现客户端和服务端数据通信源代码
  • 在Linux下开发手机客户端或Pc客户端交互的服务器,需要学哪些知识?
  • windows 7下打开或者关闭telnet客户端/服务端命令方法操作步骤
  • linux端是服务器,客户端连接后,有时并不知道客户端断开,怎么侦测?
  • andriod下java socket网络编程:java socket客户端服务端代码示例
  • 已和客户端连接建立的socket在客户端CTRL-C后怎么在服务器端捕捉这个错误?
  • Linux c socket编程:简单的客户端(client)和服务端(server)实现
  • 对于用客户端上网的用户(客户端不支持linux)如何在linux下上网?
  • 请问:我发现send函数会使客户端退出, 这怎么办啊,怎样让它不使客户端退出啊,这样我就能重新连上了啊?
  • 客户端访问的时候,怎么样取得客户的IP地址?
  • linux 能ping通客户端ip,但ping不通客户端的域名。
  • socket编程,服务器会用bind()绑定端口,而客户端不用绑定端口就可以调用connect()。那么客户端的端口时系统自己分配的么?是何时绑定的?
  • 服务器端关闭,客户端select 会一直可读, 读的长度是-1,怎么在不关闭客户端socket下,清除可读
  • 关于B/S结构的客户端打印的问题,求教各位 各位大虾,我用servlet和jsp作了一套b/s的系统,现在客户端需要打印,怎样才能实现?帮帮忙啊,小弟再此先谢过了!
  • 求救:j2ee的构架下,可以作为一个客户端不断的往一用vc做的应用程序客户端发数据吗?
  • 请问tcp 客户服务器模型(C/S模型)客户端两个send如果发送间隔太短,服务器端为什么会认为受到的只是一个包
  • socket编程中客户端绑定端口的问题,请兄弟们指点一下
  • jsp如何实现往客户端写数据文件
  • 可以在客户端存储文件吗?
  • 客户端 socket 断开后 服务器端系统如何处理?
  • socket问题,当客户端关闭或者实际链路断开后服务器端怎么判断?
  • 为什么客户端断开连接后,read的返回值是0?
  • 客户端和服务器端非正常断开的问题。
  • 问一个socket问题,服务器不停send,客户端进入睡眠服务器会断开
  • socket客户端connect服务端后,如何断开连接?
  • 在linux下面,为什么TCP服务器端在客户端没有断开前推出程序会关不掉socket?
  • 使用TCP,在客户端怎么知道建立好的连接已经断开?怎么用非阻塞模式,以及怎么知道socket已经收到数据并立即将数据读出?
  • 对socket使用select(max_fd,&rd_set,&wr_set,&er_set,&timeout);当服务端断开TCP连接,客户端就会崩溃。怎么解决?谢谢
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • IMAP 邮件客户端 Trojitá
  • 点对点文件分享客户端 PeerProject
  • 远程的 Shell 客户端 Rlogin
  • 版本控制客户端 CrossVC
  • XMPP 客户端 Profanity
  • 即时聊天客户端软件 kopote
  • Jabber/XMPP 客户端 jj
  • POP3客户端库 libspopc
  • IRC聊天客户端 Quassel
  • MUD客户端 TinTin++
  • 网络电视客户端 GMLive
  • 远程桌面客户端 rdesktop
  • 基于Web的FTP客户端 OurWebFTP
  • 基于Web的Jabber™客户端 JWChat
  • Applet 是在服务器端执行还是在客户端执行??
  • 客户端——服务端数据传送的几个困惑!
  • Linux 代理 一个客户端来就创建一个连接
  • fedora 校园客户端认证问题
  • 高性能 HBase 客户端 Asynchronous HBase
  • Java的CVS客户端 Gruntspud


  • 站内导航:


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

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

    浙ICP备11055608号-3