windows 平台socket客户端

来源:互联网 发布:cf视频软件中文版 编辑:程序博客网 时间:2024/06/05 15:09

离职前写一个Windows上的小程序,socket client,在BCB平台通过调用Windows API实现简单的客户端。

/*** Filename: --mainForm.cpp** Function: --创建Socket,连接,并发送数据,调用Windows API实现Socket** Author:   --ericteck** Date:     --2011.9.21*///---------------------------------------------------------------------------#include <vcl.h>#pragma hdrstop#include "mainForm.h"#include "setServer.h"//---------------------------------------------------------------------------#pragma package(smart_init)#pragma resource "*.dfm"TForm1 *Form1;/********************************************************  主窗体类的构造函数******************************************************/__fastcall TForm1::TForm1(TComponent* Owner)        : TForm(Owner){        this->Memo1->SetTextBuf("");}/********************************************************  连接实现函数******************************************************/void __fastcall TForm1::Button_ConnectClick(TObject *Sender){        /*        ** 初始化Scoket        */        InitSocket();        /*        ** 释放指针        */        free(pCIp);        free(pCPort);        pCIp = NULL;        pCPort = NULL;}/********************************************************  初始化Socket******************************************************/void __fastcall TForm1::InitSocket(){     /*     ** 初始化 Windows Socket     */     if ( WSAStartup(MAKEWORD(2,2), &Ws) != 0 )     {         this->Memo1->SetTextBuf("Init Windows Socket Failed");     }     /*     ** 创建 Windows Socket     */     CientSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);     if ( CientSocket == INVALID_SOCKET )     {         this->Memo1->SetTextBuf("Create Socket Failed");     }     /*     ** Initialize server:协议,IP地址,端口     */     ServerAddr.sin_family = AF_INET;     ServerAddr.sin_addr.s_addr = inet_addr(pCIp);     ServerAddr.sin_port = htons(StrToInt(pCPort));     memset(ServerAddr.sin_zero, 0x00, 8);//让sockaddr_in匹配sockaddr     /*     ** 建立socket连接     */     Ret = connect(CientSocket,(struct sockaddr*)&ServerAddr, sizeof(ServerAddr));     if ( Ret == SOCKET_ERROR )     {         this->Memo1->SetTextBuf("Connect Error");     }     else     {         this->Memo1->SetTextBuf("连接成功!在此输入字符发送!");     }}/********************************************************  断开socket连接******************************************************/void __fastcall TForm1::Button_DisconnectClick(TObject *Sender){        closesocket(CientSocket);        WSACleanup();}/********************************************************  关闭Socket******************************************************/void __fastcall TForm1::Button_CancelClick(TObject *Sender){        closesocket(CientSocket);        WSACleanup();        this->Close();}/********************************************************  发送数据******************************************************/void __fastcall TForm1::Button_SendClick(TObject *Sender){        /*        ** 获取输入的数据        */        this->Memo1->GetTextBuf(this->SendBuffer,sizeof(SendBuffer));        /*        ** 发送数据到缓存        */         if ( send(CientSocket, SendBuffer, (int)strlen(SendBuffer), 0) == SOCKET_ERROR )         {             this->Memo1->SetTextBuf("Send Info Error");         }}/********************************************************  设置Server的IP与Port******************************************************/void __fastcall TForm1::Button_SetClick(TObject *Sender){        TForm2 *Form2;        Form2=new TForm2(Application);//动态创建Form2        Form2->Show();}


源代码:bcb_win_socketclient

原创粉丝点击