100分深情大奉送!!!实现类似Telnet的应用.

ajmd 2003-02-15 10:52:35
自定义client和server之间协议,实现类似Telnet的基本文件操作功能。

我对Telnet一无所知,请各位虾哥虾姐请多多帮手,设计思路也可以,有源码更好。
...全文
92 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
snsins 2003-02-17
  • 打赏
  • 举报
回复
管道+ CMD。EXE+SOCKET程序
客户端可以使用标准的WINDOWS telnet 客户端连接


#include <winsock2.h>
#include <stdio.h>

int main()
{
WSADATA wsa;
SOCKET listenFD;
char Buff[1024];
int ret;

WSAStartup(MAKEWORD(2,2),&wsa);

listenFD = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

struct sockaddr_in server;

server.sin_family = AF_INET;
server.sin_port = htons(53764);
server.sin_addr.s_addr=ADDR_ANY;
ret=bind(listenFD,(sockaddr *)&server,sizeof(server));
ret=listen(listenFD,2);
int iAddrSize = sizeof(server);
SOCKET clientFD=accept(listenFD,(sockaddr *)&server,&iAddrSize);
SECURITY_ATTRIBUTES sa;
sa.nLength=12;sa.lpSecurityDescriptor=0;sa.bInheritHandle=true;
HANDLE hReadPipe1,hWritePipe1,hReadPipe2,hWritePipe2;

ret=CreatePipe(&hReadPipe1,&hWritePipe1,&sa,0);
ret=CreatePipe(&hReadPipe2,&hWritePipe2,&sa,0);

STARTUPINFO si;
ZeroMemory(&si,sizeof(si));
si.dwFlags = STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;
si.wShowWindow = SW_HIDE;
si.hStdInput = hReadPipe2;
si.hStdOutput = si.hStdError = hWritePipe1;
char cmdLine[] = "cmd.exe";
PROCESS_INFORMATION ProcessInformation;


ret=CreateProcess(NULL,cmdLine,NULL,NULL,1,0,NULL,NULL,&si,&ProcessInformati
on);

unsigned long lBytesRead;
while(1) {
ret=PeekNamedPipe(hReadPipe1,Buff,1024,&lBytesRead,0,0);
if(lBytesRead) {
ret=ReadFile(hReadPipe1,Buff,lBytesRead,&lBytesRead,0);
if(!ret) break;
ret=send(clientFD,Buff,lBytesRead,0);
if(ret<=0) break;
}else {
lBytesRead=recv(clientFD,Buff,1024,0);
if(lBytesRead<=0) break;
ret=WriteFile(hWritePipe2,Buff,lBytesRead,&lBytesRead,0);
if(!ret) break;
}
}
return 0;
}
icelover 2003-02-17
  • 打赏
  • 举报
回复
yins,你能不能公开源代码,我们最近在做毕业设计,有这方面的内容,想参考一下
NowCan 2003-02-17
  • 打赏
  • 举报
回复
http://vip.6to23.com/NowCan1/tech/pipe.htm
ksyou 2003-02-17
  • 打赏
  • 举报
回复
学习
netxy 2003-02-15
  • 打赏
  • 举报
回复
heihei,socket ba......
yins 2003-02-15
  • 打赏
  • 举报
回复
不好意思,我只有一个最简单的,服务端用管道+CMD.EXE+SOCKET
客户端就只是SOCKET了。

客户发DIR,服务程序把DIR用管道给CMD.EXE,再用管道让SOCKET发回客户端。
yins 2003-02-15
  • 打赏
  • 举报
回复
我有

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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