欢迎来到天天文库
浏览记录
ID:27664392
大小:28.00 KB
页数:4页
时间:2018-12-05
《软件工程师(面试题)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、软件工程师--面试题编写一个基于TCP的C/S模式网络程序,TCP是基于流的协议,客户端发送的数据,服务端不一定会按照客户端的发送来收取比如:客户端调用了2次send()发送数据,第1次发送包头+数据,第2次同样。服务端调用recv()收取,有可能一次收完整,有可能只收到了包头,有可能收到了包头+部分数据,有可能收到了"包头+数据+包头+部分数据"等等情况。所以此题重点是可以正确处理TCP粘包,从接收缓冲区中正确的解析出数据包。发送包格式为:包头+数据+包头+数据...,包头结构如下:typedefstru
2、ct_PACKET_HEAD{ULONGOpCode;//操作码,可以无视。ULONGDataSize;//数据长度,紧跟在包头后面。}PACKET_HEAD,*LPPACKET_HEAD;4客户端:间隔100ms循环向服务端发送数据,其中PACKET_HEAD::DataSize随机生成,最小100字节,最多10KB,发送的数据随意。while(1){PACKET_HEADhead={0};head.DataSize==???;//随机长度send(sock,包头+数据缓冲区,总长度,0);Sleep(1
3、00);}服务端:收取客户端发送过来的数据,接收数据缓冲区长度固定为4KB,对收取的数据,按照包头+PACKET_HEAD::DataSize指定的长度正确解析,将正确的包头+数据写入文件里。while(1){4charbuf[1024*4]={0};intlen=recv(sock,buf,sizeof(buf),0);//根据buf中的数据,解析出正确的数据包。//......}要求:1.使用标准Socket完成,不得MFCSocket等类库。2.可以使用MFC/ATL/STL中的数据结构类简化编码,比
4、如CList,CMap等。3.使用Unicode编码,能够兼容32和64位,并且可以编译成原生64位程序。开发工具采用VS2008。/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////编写一个可以读取任意网页的程序,如geturl.exehttp://www.xx.com/xx.htmlx
5、x.html,将xx.html读取下来,保存为xx.html文件。4要求:1.使用标准Socket完成,不得使用WinInet或WinHTTP。2.能够处理HTTP响应头Content-Length和Transfer-Encoding两种情况。(google搜索页返回的HTTP数据就是Transfer-Encoding,可以在这里测试。)3.使用Unicode编码,能够兼容32和64位,并且可以编译成原生64位程序。开发工具采用VS2008。4
此文档下载收益归作者所有