📄 server.dpr
字号:
program server;
{$APPTYPE CONSOLE}
uses
sysutils,
winsock,
windows,
MCommand in 'MCommand.pas';
{$R *.RES}
const
MaxLen=1024*2;
var
count,ret,port,size:integer;
thd,pid:dword;
WSADATA:TWSADATA;
sin:TSockAddr;
ss:TSocket;
pcs:^TSocket;
host:string;
databuf:array[0..MaxLen] of char;
function ThreadFun(lp:Pointer):integer;stdcall;
var
pcs:^TSocket;
ret:integer;
begin
//返回值
Result:=0;
//取得客户接口
pcs:=lp;
//接收客户信息
ret:=recv(pcs^,databuf,MaxLen,0);
databuf[ret]:=#0;
writeln(format('recv=%d,%s',[ret,databuf]));
MCommand.ExecCommand(databuf);
//发送服务信息
// strcopy(databuf,pchar(format('Hack Server on Host=%s,Port=%d,count=%d',[host,port,count])));
ret:=send(pcs^,databuf,strlen(databuf),MSG_DONTROUTE);
writeln(format('send=%d',[ret]));
//关闭客户接口
ret:=closesocket(pcs^);
writeln(format('closesocket=%d,pcs=%x',[ret,integer(pcs)]));
//
Dispose(pcs);
end;
begin
writeln('Hack Server Ready.............');
count:=0;
//初使化网络环境
ret:=WSAStartup(MakeWord(1,1),WSADATA);
writeln(format('WSAStartup=%d',[ret]));
//建立服务端接口
ss:=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);
writeln(format('socket=%d',[ss]));
// if ss=-1 then halt;
//将接口和网卡邦定
host:='127.0.0.1';
port:=7404;
sin.sin_family:=PF_INET;
sin.sin_addr.s_addr:=inet_addr(pchar(host));//INADDR_ANY;//
sin.sin_port:=htons(port);
//
ret:=bind(ss,sin,sizeof(sin));
writeln(format('bind=%d',[ret]));
//侦听网络连接请求
ret:=listen(ss,5);
writeln(format('listen=%d',[ret]));
repeat
//接受客户请求
size:=SizeOf(sin);
new(pcs);
pcs^:=accept(ss,sin,size);
writeln(format('accept=%d,pcs=%x,count:=%d',[pcs^,integer(pcs),count]));
inc(count);
//启动客户服务线程
thd:=CreateThread(nil,0,@ThreadFun,pcs,0,pid);
WaitForSingleObject(thd,INFINITE);
until false;
//关闭服务接口
ret:=closesocket(ss);
writeln(format('closesocket=%d',[ret]));
//清理网络环境
ret:=WSACleanup;
writeln(format('WSACleanup=%d',[ret]));
//readln;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -