用API做的ServerSocket例子

program Server; 数据挖掘实验室

{$APPTYPE CONSOLE} 数据挖掘实验室

uses
  SysUtils,
  Winsock,
  Windows;

type
  TParam=record
    TrdId:integer;
    Sckt:TSocket;
  end; 数据挖掘工具

//子线程函数
function ChildThrd(p:Pointer):LongInt;stdcall;
var
  PkLen:integer;
  ThreadId:integer;
  ASocket:TSocket;
  buf:array[0..63] of char; 
begin
  Result:=0;
  ThreadId:=TParam(p^).TrdId;
  ASocket:=TParam(p^).Sckt;
  Writeln("Thread "+IntToStr(ThreadId)+" Create"); 
  PkLen:=1;
  while PkLen>0 do
  begin
    FillChar(buf,SizeOf(buf),0);
    PkLen:=Recv(ASocket,buf,SizeOf(buf),0);  //接收数据
    Write(buf);
    if PkLen>0 then
    begin
      Send(ASocket,buf,PkLen,0);//发送数据
    end;
  end;
  CloseSocket(ASocket); //关闭socket
  Dispose(p);
  Writeln("Thread "+IntToStr(ThreadId)+" End");
  Writeln("Socket "+IntToStr(ASocket)+" DisConnect");
end; 数据挖掘交友

//主程序
var
  MyWSA: WSAData;
  Svr,Clt: TSockAddr;
  NameLen:Integer;
  hSocket,s: TSocket;
  TimeOut:integer;
  ThreadCount:integer;
  hThread:Thandle;
  ThreadID:DWord;
  Param:^TParam;  
begin
  If WSAStartup(MAKEWORD(2,2), MyWSA) <> 0 Then  //初始化
  Begin
    WSACleanup;
    Writeln("WSAStartup() Fail");
    Exit;
  end;
  hSocket := Socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); //创建socket
  If hSocket = INVALID_SOCKET Then
  Begin
    WSACleanup;
    Writeln("Socket() Fail");
    Exit;
  End;
  Svr.sin_family := AF_INET;
  Svr.sin_port := htons(176); //server端口号为176
  Svr.sin_addr.S_addr := inet_addr(PChar("127.0.0.1"));//server的ip地址为127.0.0.1
  If Bind(hSocket, Svr, SizeOf(Svr)) = SOCKET_ERROR Then  //绑定socket

数据挖掘研究院


  Begin
    CloseSocket(hSocket);
    WSACleanup;
    Writeln("Bind() Fail");
    Exit;
  end;
  if Listen(hSocket,256) = SOCKET_ERROR Then  //socket开始侦听,最大同时连接数为256个
  begin
    CloseSocket(hSocket);
    WSACleanup;
    Writeln("Listen() Fail");
    Exit;
  end;
  TimeOut:=3000;
  ThreadCount:=0;
  Writeln("Listening......");
  while true do
  begin
    NameLen:=SizeOf(Clt);
    s:=Accept(hSocket,@Clt,@NameLen);//接受一个连接
    if s = SOCKET_ERROR Then
    begin
      CloseSocket(hSocket);
      WSACleanup;
      Writeln("Accept() Fail");
      Exit;
    end
    else
    begin
      Writeln("Socket "+IntToStr(s)+" Connect");
      if SetSockOpt(s,SOL_SOCKET,SO_RCVTIMEO,PChar(@TimeOut),SizeOf(TimeOut))=SOCKET_ERROR then //设置接收超时为3秒
      begin
        CloseSocket(s);
        CloseSocket(hSocket);
        WSACleanup;
        Writeln("SetSockOpt() Fail");
        Exit;
      end;
      if SetSockOpt(s,SOL_SOCKET,SO_SNDTIMEO,PChar(@TimeOut),SizeOf(TimeOut))=SOCKET_ERROR then //设置发送超时为3秒
      begin
        CloseSocket(s);
        CloseSocket(hSocket);
        WSACleanup;
        Writeln("SetSockOpt() Fail");

数据挖掘工具


        Exit;
      end;
      new(Param);
      Param^.TrdId:=ThreadCount;
      Param^.Sckt:=s;
      hThread:=CreateThread(nil,0,@ChildThrd,Param,0,ThreadID); //创建childthrd子线程
      if hThread=0 then
      begin
        Writeln("CreateThread() Fail");
      end
      else
      begin
        Inc(ThreadCount);
      end;
    end;
  end;
  CloseSocket(hSocket); //关闭socket
  WSACleanup;
end.
数据挖掘论坛

//源码下载 http://ono.3322.org/mysoft/serversocket.zip 数据挖掘论坛

[数据挖掘专家] [数据挖掘研究院] [数据挖掘论坛] [数据挖掘实验室]
上一篇:"网络蚂蚁"和"FlashGet"的悬浮窗口的实现
下一篇:利用Hook技术实现键盘监控
最新评论共有 0 位网友发表了评论 , 查看所有评论
发表评论( 不能超过250字,需审核,请自觉遵守互联网相关政策法规。 )
匿名?
数据挖掘网站导航 数据挖掘论坛导航
  • 数据挖掘工具
  • 数据挖掘论坛
  • DataCruncher - Cognos
  • MineSet - MathSoft
  • Intelligent Miner - GainSmarts
  • Sqlserver - SAS - Clementine
  • CART - Weka - WizSoft
  • NeuroShell - ModelQuest
  • data mining tools - Darwin
  • 数据挖掘交友
  • 数据挖掘博客
  • 数据挖掘工具
  • 数据挖掘资源
  • 数据挖掘技术算法
  • 数据挖掘相关期刊、会议
  • 研究院联盟合作专区
  • 数据挖掘基础与相关技术
  • 数据挖掘厂商与就业
  • 数据挖掘研究者乐园
  • 知名厂商数据挖掘工具资料
  • 国内数据挖掘实验室
  • Foreign Data Mining Lab
  • 热点关注
  • GDI+简介
  • COM与DCOM的区别与联系
  • 使用Delphi解析XML 文档
  • 如何设置delphi/cbuilder/BDE/MSSQL
  • BORLAND在“迫害”程序员?
  • 将image的图片保存为JPG格式图片方法
  • InstallShieldExpressfordelphi制作安装程
  • Real Programmers Use Pascal
  • 关于在COM中使用可选参数的研究
  • TStrings的AddObject方法应用
  • 论坛最新话题
  • Foundations of Statistical Natural Langu
  • Game Theory meet Data Mining: A Recent P
  • System Building: How does it help or hin
  • 数据挖掘与Clementine培训
  • 新手报到
  • 求 SASEM 客户流失预测分析
  • 数据挖掘工程师/搜索研究院—北京——无线
  • 数据挖掘入门介绍(如何着手数据挖掘)
  • Information Overload Survey Results
  • The INEX 2005 Workshop on Element Retrie
  • 相关资讯
  • BORLAND在“迫害”程序员?
  • 李维:我的回忆和一些有趣的事(精彩绝伦)
  • 李维看.net和DELPHI6(含李维照片)
  • 《代码大全》电子版1.01发布了
  • Real Programmers Use Pascal
  • Kylix安装手记
  • Borland与Microsoft关于Delphi的对话
  • InstallShieldExpressfordelphi制作安装程
  • 关于在COM中使用可选参数的研究
  • msagent经典用法
  • 数据挖掘实验室资料
  • 数据挖掘博客地址
  • 数据挖掘实验室网站地址
  • Prepare for Medicare audits by using dat
  • 注册成为SAS用户与爱好者俱乐部会员
  • 水南梅
  • 明日烟
  • 新人报道
  • 下载
  • 厦门服务器托管,450元/月—0592-5177319 高
  • 买空间送域名--0592-5177319 高静