OpenSSL BIO写入部分文件

时间:2018-09-26 09:05:16

标签: c openssl

我正在尝试使用openssl bio执行FTP STOR操作。大多数情况下,它运行良好,但有时只发送部分数据。因此逻辑如下:

public function addUser(Request $request){
   if($request->isMethod('post')){
       $data = $request->all();

          $this->validate($request, [
            'full_name' => 'required',
            'user_email'=> 'required',
            'user_type'=> 'required',
            'user_password' => 'required'
          ]);
         /* [
            'menu_id.required' => 'Menu Name is required',
            'title.required' => 'Title is required',
            'description.required' => 'Description is required'
        ]);*/

       $user = new User();
       $user->type = $data['user_type'];
       $user->name = $data['full_name'];
       $user->user_id = $data['user_id'];
       $user->email = $data['user_email'];
       $password = Hash::make('user_password');
       $user->password = $password;
       $user->save();

       return redirect('/admin/view-user')->with('flash_message_success','User Added Successfully..');
   } 
     $user_type = DB::table('user_type')->pluck("title","id");
     return view('admin.user.add_user')->with(compact('user_type'));

}

所有操作应同步执行。数据写入功能可以做到这一点:

1. authentication and passive mode selection
2. open data connection
3. write data
4. QUIT

在此循环之后,将==写入Write并且n> 0,因此它将指示写入成功完成。但是,该文件被截断。当我在Wireshark中查看该操作时,我可以注意到QUIT操作是在传输第一个数据块之后立即发送的。客户端还在QUIT命令之后继续发送一些数据块。有人知道这怎么可能吗?

编辑:如果在写入数据和退出(QUIT)之间存在短暂的延迟(例如睡眠),则效果很好。

1 个答案:

答案 0 :(得分:0)

我发现了问题所在。在关闭数据连接和发送QUIT之间,我没有等待控制套接字上的响应。 This question对找到答案很有帮助。