到网上下一本windows网络编程
this are some examples about internet progarming with delphi in folders of delphi

解决方案 »

  1.   

       我作过
       [email protected]
      

  2.   

    给你一张初学写套接字时写的代码。BCB的:
    //---------------------------------------------------------------------------#include <vcl.h>
    #pragma hdrstop#include "main.h"
    #include "set.h"
    #include "winsock2.h"
    #include <algorithm>
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TMainForm *MainForm;
    /////////////////////////////////////////////////////////////////////////////
    char MyStr[65535]="POST /cgi-bin/xybook/bbs.cgi HTTP/1.1\x0d\x0a"
    "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*\x0d\x0a"
    "Referer: 127.0.0.1\x0d\x0a"
    "Accept-Language: zh-cn\x0d\x0a"
    "Content-Type: application/x-www-form-urlencoded\x0d\x0a"
    "Accept-Encoding: gzip, deflate\x0d\x0a"
    "User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 98)\x0d\x0a"
    "Host: www.xy.gz.cn\x0d\x0a"
    "Content-Length: 255\x0d\x0a"
    "Connection: Keep-Alive\x0d\x0a";char strBuffer[9000];
    //////////////////////////////////////////////////////////////////////////////
    //---------------------------------------------------------------------------
    __fastcall TMainForm::TMainForm(TComponent* Owner)
            : TForm(Owner)
    {
            flag = true;
    }
    //---------------------------------------------------------------------------
    void __fastcall TMainForm::ExitBtnClick(TObject *Sender)
    {
            Application->Terminate();
    }
    //---------------------------------------------------------------------------
    void __fastcall TMainForm::FlashWindow(HWND FormHandle,int time)
    {
            AnimateWindow(FormHandle,time,AW_HIDE|AW_VER_POSITIVE);
            ShowMyWindow();
            AnimateWindow(FormHandle,time,AW_ACTIVATE|AW_VER_NEGATIVE);
            ShowMyWindow();        AnimateWindow(FormHandle,time,AW_HIDE|AW_CENTER);
            ShowMyWindow();
            AnimateWindow(FormHandle,time,AW_ACTIVATE|AW_CENTER);
            ShowMyWindow();        AnimateWindow(FormHandle,time,AW_HIDE|AW_HOR_POSITIVE);
            ShowMyWindow();
            AnimateWindow(FormHandle,time,AW_ACTIVATE|AW_HOR_NEGATIVE);
            ShowMyWindow();        AnimateWindow(FormHandle,time,AW_HIDE|AW_HOR_POSITIVE|AW_VER_POSITIVE);
            ShowMyWindow();
            AnimateWindow(FormHandle,time,AW_ACTIVATE|AW_HOR_NEGATIVE|AW_VER_NEGATIVE);
            ShowMyWindow();
    }
    //----------------------------------------------------------------------------
    void __fastcall TMainForm::ShowMyWindow(void)
    {
            for(int i(0);i<ComponentCount;i++)
            {
                    if(dynamic_cast<TControl *>(Components[i])!=0){
                            TControl *temp = ((TControl*)Components[i]);
                            temp->Refresh();
                    }
            }
    }
    //----------------------------------------------------------------------------
    void __fastcall TMainForm::WndProc(TMessage& Message)
    {
            if((Message.Msg==WM_SYSCOMMAND)){
                    if(Message.WParam==SC_MAXIMIZE){
                            ShowMessage("你不可以最大化的哦~\n会很难看的嘛!");
                            FlashWindow(Handle,256);
                            return;
                    }else if(Message.WParam==SC_MINIMIZE){
                            FlashWindow(Handle,256);
                    }else if(Message.WParam==SC_RESTORE){
                            FlashWindow(Handle,256);
                    }
            }
            TForm::WndProc(Message);
    }
    //----------------------------------------------------------------------------
    void __fastcall TMainForm::FormCreate(TObject *Sender)
    {
            Application->Title = "清雨飞扬轩--帮你发帖子";
            Application->Icon->Handle = LoadIcon(HInstance,"myIcon");
            Application->HintColor = TColor(0xFFAABB);
            Application->HintPause = 300;
            Application->HintHidePause = 60000;        MainForm->Caption = Application->Title;
            MainForm->Color = TColor(0xFF9999);        TopImage->Picture->Bitmap->Handle = LoadBitmap(HInstance,"lyr");        //DeleteFile("007.mid");
            //TResourceStream *FStream = new TResourceStream((int)HInstance,"myMusic",RT_RCDATA);
            //FStream->SaveToFile("007.mid");
            //delete FStream;        ExitBtn->Hint = "说一声再见,说一声再见\n分手时,有淡淡情意,\n萦绕在,你我心间~~~";
            ExitBtn->ShowHint = true;
            AboutBtn->Hint = "来如流水兮逝如风\n不知何处来兮何处终?";
            AboutBtn->ShowHint = true;
            SendBtn->Hint = "拉着我的手\n去你想看的地方~~";
            SendBtn->ShowHint = true;
            StopBtn->Hint = "我累啦~\n休息一下好么~~";
            StopBtn->ShowHint = true;
            SetBtn->Hint = "做自己想做的人\n做自己想做的事\n不要因外界事物\n而改变自我~~~";
            SetBtn->ShowHint = true;
            HelpBtn->Hint = "你真的要看帮助吗~\n你确定你真的要看吗?\n真的啊?那你就按啦~";
            HelpBtn->ShowHint = true;
            TopImage->Hint = "繁花谢,明月缺\n花若有情花亦老\n月如无恨月长圆\n人生虽是有情痴\n此恨也因花与月\n.........";
            TopImage->ShowHint = true;
            PoemText->Hint = TopImage->Hint;
            TopImage->ShowHint = true;        PoemText->Caption = "  繁花谢,明月缺\n  花若有情花亦老\n  月如无恨月长圆\n  人生虽是有情痴\n  此恨也因花与月\n  .........";        for(int i(0);i<ComponentCount;i++)
            {
                    if(dynamic_cast<TPanel *>(Components[i])!=0){
                            TPanel *temp = ((TPanel*)Components[i]);
                            temp->Color = TColor(0xFF9999);
                    }
            }
            SendCount = 1;
            Id = "xing" ;
            UserName = "迎风飞扬";
            UserPsd = "1234567890";
            Mail = "[email protected]";
            Home = "http://qyfeiyang.yeah.net";
            Emote = "27";
            myTime = 3600;        //MediaPlayer->FileName = "007.mid";
            //MediaPlayer->Open();
            //MediaPlayer->Play();        AnimateWindow(Handle,2000,AW_ACTIVATE|AW_CENTER);
    }
    //---------------------------------------------------------------------------
    void __fastcall TMainForm::AboutBtnClick(TObject *Sender)
    {
            ShellAbout(Handle,("欢迎你来认识我~#" + Application->Title).c_str(),
                    "程序:迎风飞扬\n主页:http://qyfeiyang.yeah.net",
                    Application->Icon->Handle);
    }
    //---------------------------------------------------------------------------
    void __fastcall TMainForm::FormCloseQuery(TObject *Sender, bool &CanClose)
    {
            if(MessageBox(Handle,"真的要走了吗?",Application->Title.c_str(),MB_OKCANCEL)== ID_OK){
                    ShowMessage("要下载最新版本,请访问:http://qyfeiyang.yeah.net\n有问题,请E-MAIL至:[email protected]");
                    CanClose = true;
                    AnimateWindow(Handle,2000,AW_HIDE|AW_CENTER);
                    DeleteFile("007.mid");
            }else{
                    CanClose = false;
            }
    }
    //---------------------------------------------------------------------------
    void __fastcall TMainForm::HelpBtnClick(TObject *Sender)
    {
            ShowMessage("我靠~~~~~~~你真白痴耶!\n这么简单的程序你也想要帮助?\n我晕~~~~~~~~~~");
    }
    //---------------------------------------------------------------------------
    void __fastcall TMainForm::SetBtnClick(TObject *Sender)
    {
            Timer->Enabled = false;
            MySetForm = new TMySetForm(Application);
            MySetForm->NameEdit->Text = UserName;
            MySetForm->PsdEdit->Text = UserPsd;
            MySetForm->MailEdit->Text = Mail;
            MySetForm->HomeEdit->Text = "http://qyfeiyang.yeah.net";
            MySetForm->TimeEdit->Text = IntToStr(myTime);
            MySetForm->Show();        SetBtn->Enabled = false;
            //delete MySetForm;
    }
    //---------------------------------------------------------------------------
    void __fastcall TMainForm::WelTextClick(TObject *Sender)
    {
            ShellExecute(Handle,"open","http://www.xy.gz.cn/",NULL,NULL,SW_SHOWNORMAL);
    }
    //---------------------------------------------------------------------------
    void __fastcall TMainForm::AboutTextDblClick(TObject *Sender)
    {
            ShellExecute(Handle,"open","mailto:[email protected]",NULL,NULL,SW_SHOWNORMAL);
    }
    //---------------------------------------------------------------------------
    void __fastcall TMainForm::SendBtnClick(TObject *Sender)
    {
            if(MessageBox(Handle,
                    "你使用本软件的话\n所造成的一切后果\n要由自己负完全责任!\n你同意按\"确定\"!\n\"否则按\"取消\"!",
                    Application->Title.c_str(),MB_OKCANCEL)!=ID_OK)return;                if(SendCount>0){
                    SendCount--;
                    Timer->Enabled = true;
                    Timer->Interval = myTime;                TReplaceFlags rf;
                    rf << rfReplaceAll;
                    AnsiString tempStr = ComMemo->Text;                tempStr = StringReplace(tempStr,'\%',"%25",rf);
                    tempStr = StringReplace(tempStr,'\=',"%3d",rf);
                    tempStr = StringReplace(tempStr,'\&',"%26",rf);
                    tempStr = StringReplace(tempStr,'\\',"%5c",rf);
                    tempStr = StringReplace(tempStr,'\/',"%2f",rf);
                    tempStr = StringReplace(tempStr,'\?',"?",rf);
                    tempStr = StringReplace(tempStr,'\r',"%0a",rf);
                    tempStr = StringReplace(tempStr,'\n',"%0d",rf);
                    tempStr = StringReplace(tempStr,'\ ',"%20",rf);
                    tempStr = StringReplace(tempStr,'\<',"%3c",rf);
                    tempStr = StringReplace(tempStr,'\>',"%3e",rf);
                    tempStr = StringReplace(tempStr,'\#',"%23",rf);
                    tempStr = StringReplace(tempStr,'\$',"%24",rf);                AddStr = ("PUT http://202.98.201.244/cgi-bin/xybook/bbs.cgi?menu=addtitle&id=" +
                    Id + "&username=" + UserName.c_str() + "&userpsd=" + UserPsd.c_str()
                    + "&mail=" + Mail.c_str() + "&home=" + Home.c_str() + "&emote=" + Emote.c_str()
                    + "&titles=" + TitleEdit->Text.c_str() + "&comment=" + tempStr.c_str() + "\r\n");                strcpy(MyStr,AddStr.c_str());                SendMyMessage();
            }
    }
    //---------------------------------------------------------------------------
    void __fastcall TMainForm::StopBtnClick(TObject *Sender)
    {
            Timer->Enabled = false;
    }
    //---------------------------------------------------------------------------
    bool __fastcall TMainForm::SendMyMessage(void)
    {
            WSADATA ws;
            SOCKET s;
            struct sockaddr_in addr;
            int iResult;
            long lResult;
            lResult = WSAStartup(0x0101,&ws);
            s = socket(AF_INET,SOCK_STREAM,0);
            addr.sin_family = AF_INET;
            addr.sin_port = htons(80);
            addr.sin_addr.s_addr = inet_addr ("202.98.201.244");
            iResult=connect(s,(struct sockaddr *) &addr, sizeof(addr));
            if(SOCKET_ERROR == iResult){// 连接失败
                    WSACleanup();
                    ShowMessage("连接服务器失败!!!\n请检查网络是否畅通!");
                    return false;
            }else{// 连接成功
                    iResult = send(s,MyStr,sizeof(MyStr),0);
            do
            {
                    strset(strBuffer,' ');
                    iResult = recv(s,strBuffer,sizeof(strBuffer),0);
                    if(flag == true){
                            if(AnsiPos("<META HTTP-EQUIV=Refresh", AnsiString(strBuffer))<=0){
                                    ShowMessage("错误!发送失败!\n请检查你的配置!\n比如密码和用户名等!");
                                    Timer->Enabled = false;
                            }
                    flag = false;
                    }
                    Application->ProcessMessages();
            }
            while( iResult !=0 );
    }
            WSACleanup();
            return true;
    }
    //----------------------------------------------------------------------------
    void __fastcall TMainForm::TimerTimer(TObject *Sender)
    {
            if(SendCount >0){
                    SendCount--;
                    SendMyMessage();
            }else Timer->Enabled = false;
    }
    //---------------------------------------------------------------------------
    void __fastcall TMainForm::ComMemoDblClick(TObject *Sender)
    {
             Timer->Enabled = false;
             if(OpenDialog->Execute()){
                    ComMemo->Lines->LoadFromFile(OpenDialog->FileName);
             }
    }
    //---------------------------------------------------------------------------
    void __fastcall TMainForm::FlashTimerTimer(TObject *Sender)
    {
            PoemText->Font->Color = TColor(random(0xFFFFFF));
            //if(MediaPlayer->Mode!=mpPlaying)
            //        MediaPlayer->Play();
    }
    //---------------------------------------------------------------------------
      

  3.   

    有没有在delphi下socket编程的资料,或者书籍什么的?:)
    请各位大虾提供!必有重谢,呵呵。
    同时谢谢rh(强硬的毛主席万岁!伟大的周总理万岁!) ,有没有delphi版本的?:)
      

  4.   

    先看看我回答的关于delphi下的socket开发
    http://www.csdn.net/expert/topic/123/123419.shtm
    我有关于socket编程的资料.