多线程FTP:

  •  以线程为单位来处理socket连接,每个线程单独维护一个当前目录变量(线程局部变量)。Linux中的实现是以pthread_key_t作为全局键来映射到每个线程的局部变量(内里的细节就是映射到线程局部变量的地址
  • socket上的每个I/O流程分解为单独的函数,以socket fd为参数
  • 为NULL的fp和-1的fd,不用fclose()和close()
  • fgets会读取’\n’,也需要读取'\n',同时client端负责过滤输入的字符串,之后再发送,server端可不用过滤
  • 同一端必须全用同一种socket Input函数,和同一种socket Output函数,不要read()和fread()混用
  • fwrite()之后需要fflush()才能将内容write到TCP缓冲区中
01-14 15:32