php - 客户端与服务器如何进行数据传输
天蓬老师
天蓬老师 2017-04-10 15:51:54
[PHP讨论组]

感觉自己对于网络传输的问题一直很困惑。网上查阅的资料也不是自己想要的,所以只好到这里来求大神帮助!

最近在做聊天室,客户端是android,我自己在本地搭了workerman当做服务器。两边都是采用websocket协议。

我用inputstream读取txt文件通过websocket发送到服务器,服务器接受到数据后写入txt文件。这时txt文件正常能够打开。

现在我用同样的方法读取android录音出来的.amr文件发送到服务器并写入.amr文件中,会出现文件损坏无法打开的问题。

基于此,感觉自己平时只注重软件功能的实现而不注重计算机原理的弊端出现了。出现了一些自己也觉得很幼稚的问题:
1:网络之间是如何传输数据的?
我将音频文件读取出来转换成二进制传输到服务端,服务端怎么将这些二进制恢复成原来的文件呢?

2:如何解决上面说的文件损坏无法打开的问题?

还是说我的理解一开始就是错的,感觉将音频文件读取出来就是不行?而应该用什么方法将音频文件进行转换才能传送呢?

客户端android代码:

 mConnection.connect(wsuri, new WebSocketHandler() {

 @Override
 public void onOpen() {
 Log.d(TAG, "Status: Connected to " + wsuri);

 InputStream is = null;
 try {
         is = new FileInputStream(_file);
     } catch (FileNotFoundException e) {
         e.printStackTrace();
     }

 byte[] bytes = new byte[1024];
 int len = 0;

 try {
        while((len=is.read(bytes))!=-1)
        {
            Log.d(TAG, "senBinaryMessage: " + bytes);
            mConnection.sendBinaryMessage(bytes);
        }
        is.close();
     } catch (IOException e) {
        e.printStackTrace();
        }                  
     }                

}

服务端代码:

$worker->onMessage = function($connection, $data)
{
    $filePath="/Users/myname/Desktop/php/";  
    if (!file_exists($filePath)){//如果指定文件夹不存在,则创建文件夹  
        mkdir($filePath , 0777);  
    }  

    $name=$filePath.'voice'.'.amr';  
    $fp = fopen ($name,"a");  

    if (fwrite ($fp,$data)){  
        echo "写入模板成功";  
    } else {  
        fclose ($fp);  
        echo "写入模板失败!";  
    }     
};
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(1)
怪我咯

服务端代码不对,应该以追加的方式写文件

$worker->onMessage = function($connection, $data)
{
    $filePath="/Users/myname/Desktop/php/";  
    if (!file_exists($filePath)){//如果指定文件夹不存在,则创建文件夹  
        mkdir($filePath , 0777);  
    }  
    $name=$filePath.'voice'.'.amr';
    // ===这里要以追加的方式写文件===
    file_put_contents($filePath.$name, $data, FILE_APPEND);
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号