现在可以在服务端上执行命令,但是如何得到服务端的输出结果并回复给客户端呢?
求高人解答,希望附上代码,带点备注,刚刚接触C++不怎么懂。//服务端
#include <stdio.h>
#include <WINSOCK2.H>
#include <iostream>
using namespace std;
#pragma comment(lib,"ws2_32.lib")
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
wVersionRequested=MAKEWORD(2,2);//定义winsock的版本号
if (WSAStartup(wVersionRequested,&wsaData)!=0)
{
cout<<"初始化失败!"<<endl;
}
else if (WSAStartup(wVersionRequested,&wsaData)==0)
{
//-------------------------*设置监听*-------------------------
SOCKET sock=socket(AF_INET,SOCK_STREAM,0);//创建监听套接字,0表示默认协议tcp/ip
int port=65534;//定义监听端口
SOCKADDR_IN tcpaddr;
tcpaddr.sin_family=AF_INET;//AF_INET表示该socket处于internet域
tcpaddr.sin_port=htons(port);//htons函数把一个14位主机字节顺序的端口号转化为网络字节顺序
tcpaddr.sin_addr.s_addr=htonl(INADDR_ANY);//htons函数把一个32位字节顺序的IP地址转化为网络字节顺序
if(bind(sock,(SOCKADDR*)&tcpaddr,sizeof(SOCKADDR))==SOCKET_ERROR)//判断绑定端口是否成功,如果失败则执行下面的语句
{
bind(sock,(SOCKADDR*)&tcpaddr,sizeof(SOCKADDR));//重新绑定
return;
}
listen(sock,10);//将套接字设置成监听模式,等待连接
//
//
//-------------------------*设置连接*-------------------------
SOCKET links=accept(sock,NULL,NULL);//
int RcvLen=0; 
char buf[1024]; 
while(RcvLen>=0) 
{
memset(buf,0,1024); 
RcvLen=recv(links,buf,1024,0); 
if(RcvLen>0) 
system(buf);
}

}
}
//客户端
#include <WINSOCK2.H>
#include <stdio.h>
#include <iostream>
#pragma comment(lib,"ws2_32.lib")
using namespace std;
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
wVersionRequested=MAKEWORD(2,2);
if (WSAStartup(wVersionRequested,&wsaData)!=0)
{
cout<<"winsock初始化失败!"<<endl;
}
cout<<"IP:";
char ip[1024];
gets(ip);
int port;
cout<<"port:";
cin>>(port);
SOCKET server;
SOCKADDR_IN tcpaddr;
tcpaddr.sin_family=AF_INET;
tcpaddr.sin_port=htons(port);
tcpaddr.sin_addr.S_un.S_addr=inet_addr(ip);
server=socket(AF_INET,SOCK_STREAM,0);
if (connect(server,(SOCKADDR*)&tcpaddr,sizeof(tcpaddr))!=0)
{
cout<<"连接错误!"<<endl;
WSACleanup();
}
else if (connect(server,(SOCKADDR*)&tcpaddr,sizeof(tcpaddr))==-1)
{
char cmd[1024];
while(TRUE)
{
cout<<"root>"; 
gets(cmd);
send(server,cmd,strlen(cmd),0);
}
}
}