面试题 UNIX和网络相关

xianshiqi 2005-11-09 01:14:27
1。UNIX中调用bind 然后unlink 会出现什么情况,为何?

2。网络编程中,发送文件或接受文件出了问题,怎么处理,最好给出一个例子。

3。网络中,传输的数据如何识别数据传输结束,给个例子
另外常用的语句m_socket->Send((char*)&bitSize,sizeof(bitSize)+1); 加1是干吗的
...全文
544 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
imsheng 2005-11-10
  • 打赏
  • 举报
回复
应该是有缓存吧.断点时做个记号.

下次重发时,在字节流上搜索.
xianshiqi 2005-11-09
  • 打赏
  • 举报
回复
发送文件或接受文件出了问题,如果从断点传送的话,通过什么方式知道该断点呢
yeehya 2005-11-09
  • 打赏
  • 举报
回复
2.网络编程中,发送文件或接受文件出了问题,怎么处理,最好给出一个例子?
发送文件肯定是经过封装的,究其根源肯定还是在send和recv函数出错,所以应该是根据相应的errno来进行处理.
yeehya 2005-11-09
  • 打赏
  • 举报
回复
sizeof(bitSize)+1,应该是存放报的长度,这个1中放的就是sizeof(bitsize)的值,这个1的位置应该是在头部,对方接受到了,知道自己应该接受的长度,不多接也不能少接,tcp是字节流无边界,所以只能这样通知对方,最简便的方法是完全封装到一个union中,但这势必会造成很多的不必要的消耗.
xianshiqi 2005-11-09
  • 打赏
  • 举报
回复
1、如果重新发送数据的话,原来的传输的数据在客户端如何处理了呢,这是由系统自动完成还是怎么的?

2、另外第一题不是网络的,只是unix系统的题,好像是说“系统调用bind 然后在调用unlink 会出现什么情况,为何”

3、m_socket->Send((char*)&bitSize,sizeof(bitSize)+1); 是MS代码,bitSize是WORD在发送和接受时,源程序都加了个1,那计算机如何识别传输的结束。

newbiestar 2005-11-09
  • 打赏
  • 举报
回复
不同意楼上的观点,如果strlen还可以说得过去,对于sizeof来说,这样必然造成一个越界访问,如果真的出现这种情况,就说明程序员本身对字符串的认识就有问题,'\0'是包含在缓冲区中的。
x86 2005-11-09
  • 打赏
  • 举报
回复
+1是把字符串最后的结束标志加到长度计算里面,也就是最后的\0也要传送

一般来讲,识别传送结束可以是:
1、对方关闭socket
2、读到双方约定好的结束标志串
s_topman 2005-11-09
  • 打赏
  • 举报
回复
up
newbiestar 2005-11-09
  • 打赏
  • 举报
回复
1、bind和unlink似乎并不是有很密切的关系吧?除非你创建的socket使用的是Unix域协议(即socket的时候使用的是PF_LOCAL或者PF_UNIX)

常规的socket不知道你怎么unlink?unlink(2)的参数是const char*,而常规socket并没有什么const char*来标志的唯一识别形式……

2、这个也太宽泛了吧?可以让对方从断点重传,也可以让对方从头来过,还可以让对方什么都不管。

3、怎么看这个都像是M$风格的代码啊?是Unix的面试题么(怀疑m_socket指向了CSocket对象,然后通过->来调用虚函数的)?

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧