分类 云笔记 下的文章

“收集其他网站上看到的点滴内容。”

近期有两组数据,让人有一种感受:中国老百姓更爱存钱了。

上半年住户存款增加超10万亿元

央行11日发布的数据显示,上半年人民币存款增加18.82万亿元,同比多增4.77万亿元。其中,住户存款增加10.33万亿元,非金融企业存款增加5.3万亿元,财政性存款增加5061亿元,非银行业金融机构存款增加9513亿元。6月份,人民币存款增加4.83万亿元,同比多增9741亿元。

上半年住户存款增加10.33万亿元,这是什么概念?这意味着,在上半年,平均每天约571亿存款涌向银行。

纵向来看,2021年上半年住户存款增加7.45万亿元,2020年上半年住户存款增加8.33万亿元,2019年上半年住户存款增加6.82万亿元,2018年上半年住户存款增加4.26万亿元。也就是说,2022年上半年增加的住户存款创出近年同期的新高。

58.3%居民倾向于“更多储蓄”

根据央行发布的2022年第二季度城镇储户问卷调查报告,倾向于“更多消费”的居民占23.8%,比上季增加0.1个百分点;倾向于“更多储蓄”的居民占58.3%,比上季增加3.6个百分点;倾向于“更多投资”的居民占17.9%,比上季减少3.7个百分点。

也就是说,愿意更多存钱的人大幅变多了,而愿意更多投资的人变少了。

上半年住户存款大幅增长,还有未来储蓄意愿的提升,令小伙伴们心生疑问:为什么大家更爱存钱了?

中国人更爱存钱的背后

招联金融首席研究员董希淼对中新网“中国新观察”栏目表示,居民存款大幅度增长、储蓄意愿增强的原因是多方面的,既有短期影响也有长期因素。

董希淼指出,从短期因素看,主要是新冠肺炎疫情带来的冲击。今年3月份以来,我国疫情持多点散发,部分企业难以正常生产经营,不稳定、不确定因素增多,导致居民预防性储蓄动机上升。

与此同时,今年以来受国际金融市场震荡影响,我国资本市场波动加剧,股票、基金收益明显下降,特别是银行理财产品出现“破净”,导致居民风险偏好有所下降,部分资金重新流向存款。

兴业银行首席经济学家鲁政委在研报中表示,2020年的经验显示,疫情会导致居民存款同比增速上升,而且存款同比增速会在较高水平上保持一段时间。

董希淼认为,作为消费主力军的中青年群体,除了收入上具有优势以外,还面临“上有老、下有小”等生活压力。居民对未来收入和支出的不确定性预期提高,使得居民预防意识和储蓄意愿明显增强。此外,随着房地产市场调控力度加大,居民住房消费意愿持续不振,减少了住房消费支出,部分转为居民存款。

怎样才能刺激消费?

储蓄变多,有利有弊。

董希淼表示,居民存款持续增加提高我国经济发展韧性,增强居民部门抵御风险能力,但也反映出居民对未来预期转弱、消费需求不足、投资意愿下降等问题。下一步,应采取针对性的措施,稳住居民预期和信心,进一步提振居民消费和投资。

他建议,严格落实国家卫健委“九不准”要求,平衡好疫情防控和经济增长的关系,最大限度降低疫情防控对经济和民生的冲击,稳定企业和居民的预期。进一步稳住宏观经济大盘。落实好前期出台的稳经济一系列政策措施,财政政策和货币政策应更加积极有为,主动发力,继续助力市场主体纾困解难和实体经济稳步恢复,稳定居民就业,提高居民收入。

董希淼指出,要提振居民消费意愿和能力。持续释放国内市场潜力,采取积极有效措施,改变居民消费动机不足等问题,改善居民消费环境,培育中高端消费增长点,扩大汽车等耐用消费品消费,促进居民消费转型升级。进一步落实好差别化的住房信贷政策,合理把握信贷投放,更好地满足居民自住型和改善型购房需求。

从长远看,董希淼建议,进一步完善全覆盖的社会保障体系,更好地满足居民养老、就医、教育等方面的迫切需求,降低居民后顾之忧进而降低预防性储蓄意愿。

当前,各地也在想方设法来刺激消费,提振汽车和房地产消费成为重要抓手。

在促进汽车消费方面,除了减征购置税外,多地还拿出真金白银的补贴,刺激大家买车。在刺激房地产消费方面,多地已经宣布放松限购、限售,降低首付比例,相当多的城市还会发放购房补贴。另外,多地也通过发放消费券来拉动消费,比如北京7月起线上线下发放1亿元餐饮消费券。(记者 李金磊)

TCP_NODELAY is option given to setsockopt system call:

#include <netinet/tcp.h>

int yes = 1;
int result = setsockopt(sock,
                        IPPROTO_TCP,
                        TCP_NODELAY,
                        (char *) &yes, 
                        sizeof(int));    // 1 - on, 0 - off
 if (result < 0)
      // handle the error

This is to set Nagle buffering off. You should turn this option on only if you really know what you are doing.

tcp_nodelay

受访专家/广州中医药大学第一附属医院胸外科主任 王继勇副教授

进入三伏,酷热难耐,出汗在所难免。可是我们身边有些朋友,即使坐在空调房里也大汗淋漓;有的则稍微一动就出汗;有的白天出汗不多,晚上睡觉时 却会汗湿几件睡衣……广州中医药大学第一附属医院胸外科主任王继勇副教授介绍说,由于个人体质不同,汗多汗少会有差异,不同情况、不同部位的出汗,是可以 透露出身体信号的。

坐着不动也出汗or稍微一动就大汗

提示信号:气虚

有些人坐着不动都会出大汗或者稍微运动就大汗淋漓,有此症状多是因为气虚。王继勇主任介绍说,中医认为“气固体表”,能“摄血摄汗液”,气足, 则像磁铁一样吸引住汗液,让它不往外泄;气虚,则失去牵引力,汗液止不住地往外流。所谓出“虚汗”,原因就在于此。一般来说,气虚源于身体状况差,像先天 不足或后天过度劳累、久病、反复吃药损伤身体等,都会导致气虚。而这类人的表现也比较典型,除了猛出汗,还常常感觉疲倦、懒言,比较安静。

建议:对于这部分人群,在夏季除了要多喝水以外,可以在中医师的指导下多吃些补气的东西,比如党参、北芪、太子参、西洋参、高丽参。易上火人群 宜选用太子参、西洋参,煮水泡茶喝。泡茶时每人的用量是太子参15克或西洋参15克。同时,也可以拿二者分别同鸭肉或兔肉一起煲汤。之所以与鸭肉或兔肉搭 配,主要是二者均有养阴之功效,因为出汗过多易使身体丢失过多的阴液。

身体底子差或寒性体质的人,有脾阳虚的症状(例如容易腹胀、便溏、拉肚子),则可选用党参或高丽参,在用法或用量上与食用太子参或西洋参相同。

睡着易出汗,多为“盗汗”

提示信号:阴虚火旺

气虚的人往往是“自汗”(即在清醒状态下,动或不动都出很多汗),不同的是,有一些人往往是晚上睡觉时,特别是睡着后猛出汗,有时甚至一夜要汗 湿两三件睡衣,这种情况叫做“盗汗”,以阴虚火旺的人最为多见。这类人常常晚上睡不好,还有口干舌燥、喉咙干痛、声音嘶哑、大便干结等症状。

建议:阴虚火旺的人在夏季可以用西洋参来调理,如用西洋参片泡水喝,还可以服用知柏地黄丸。饮雪耳糖水、生地花生猪脚汤也有滋阴清热的作用。

阴虚火旺的人不要吃上火的食物。阴虚火旺的人容易发脾气,要多做一些让自己身心放松的事情,像听音乐、看书、画画、外出旅游、与朋友聚会等,还可以抽空做做推拿、拔火罐,疏解身体的紧张,这样也能让心情变得好起来。

手心常常汗淋淋

提示信号:手汗症

我们常有这样的说法,“紧张得手心都出汗了”。对于大多数人来说,当心情放松后,手心的汗就消退了,或在衣服上擦擦就没了。可对于有些人来说, 手心总是汗淋淋的,严重的甚至还滴水,他们因此不敢和人握手,在社交场合会更加紧张,而这种紧张又会加重出汗,这就叫做“手汗症”了。

王继勇介绍,手汗症在医学上属于局限性多汗症的范畴,是因局部交感神经损伤或异常生理反应所致,例如精神紧张、情绪激动、压力大、烦躁、焦虑, 使神经冲动增多,神经过度亢奋,就会导致手掌的小汗腺排汗异常增加。手汗症在亚洲人中的发病率较高,约为4.36%,即100个人里面就有四五个手汗症患 者。

建议:手汗症的治疗分内科药物治疗及外科手术治疗两种。内科药物治疗主要使用的是抑制交感神经的药物,但常会有口干舌燥或肠胃障碍等副作用发 生,使人不敢长期服用。外科手术方法主要是将胸交感神经神经进行切断。王继勇介绍,该手术只需在腋下切开直径仅0.5厘米的小切口,通过电视胸腔镜技术切 断胸交感神经即可,耗时只需十几分钟。手汗症治疗的最佳时期是青春期,此时症状最为明显,手术后可以解除手掌多汗的症状。

应季提醒

夏季,别把出汗当“大敌”

夏季天气炎热,出汗在所难免。可有些人痛恨出汗,恨不得一天24小时都待在空调房里。其实,夏季适当出些汗对身体是很有益处的。

据王继勇介绍,出汗是人体排泄和调节体温的方式,当我们觉得热的时候,或者在做运动的过程中,出汗是正常现象。正常的出汗有利于身体健康,出汗能够调动全身器官,改善循环。在中医看来,适当出汗还能有助于排出体内的湿邪和热毒,人也变得精神抖擞。

On Linux it’s available as a snap:

sudo snap install multipass --classic
sudo snap install multipass --beta --classic

Find available images

multipass find

multipass find
Image Aliases Version Description
snapcraft:core18 18.04 20201111 Snapcraft builder for Core 18
snapcraft:core20 20.04 20210921 Snapcraft builder for Core 20
snapcraft:core22 22.04 20220426 Snapcraft builder for Core 22
snapcraft:devel 20221109 Snapcraft builder for the devel series
core core16 20200818 Ubuntu Core 16
core18 20211124 Ubuntu Core 18
core20 20210630 Ubuntu Core 20
core22 20220610 Ubuntu Core 22
18.04 bionic 20221014 Ubuntu 18.04 LTS
20.04 focal 20221018 Ubuntu 20.04 LTS
22.04 jammy,lts 20221101.1 Ubuntu 22.04 LTS
22.10 kinetic 20221101 Ubuntu 22.10

运行镜像
From the output, there are several Ubuntu LTS versions. You can launch an instance from the list using the syntax below.

multipass launch --name test-instance 18.04

This command will launch an instance for Ubuntu 18.04.

Launch a fresh instance of the current Ubuntu LTS

$ multipass launch ubuntu

Connect to a running instance

$ multipass shell test-instance
lsb_release -a

No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.6 LTS
Release: 18.04
Codename: bionic

Mount and Unmount a local directory
To mount a local directory use the following command syntax:

multipass mount <source> <target> [<target> ...]

// 获得计算机名
AnsiString GetComputerName()
{

      char   name[MAX_COMPUTERNAME_LENGTH   +   1];    
      DWORD   size   =   MAX_COMPUTERNAME_LENGTH   +   1;    
      if(GetComputerName(name,&size))    
              return   AnsiString(name);    
      return   "";    

}

// 获得当前用户名
AnsiString GetUserName()
{

      char   username[MAX_COMPUTERNAME_LENGTH   +   1];    
      DWORD   size   =   MAX_COMPUTERNAME_LENGTH   +   1;    
      if(GetUserName(username,&size))    
              return   AnsiString(username);    
      return   "";    

}

// Windows 文件夹
AnsiString GetWindowsDir()
{

      String   path;    
      path.SetLength(MAX_PATH);    
      path.SetLength(GetWindowsDirectory(path.c_str(),path.Length()));    
      return   path;    

}

// System 文件夹
AnsiString GetSystemDir()
{

      String   path;    
      path.SetLength(MAX_PATH);    
      path.SetLength(GetSystemDirectory(path.c_str(),path.Length()));    
      return   path;          

}

// Temp 文件夹
AnsiString GetTempDir()
{

      String   path;    
      path.SetLength(MAX_PATH);    
      path.SetLength(GetTempPath(MAX_PATH,path.c_str()));    
      return   path;          

}
// 当前文件夹
AnsiString GetCurrDir()
{

      String   path;    
      path.SetLength(MAX_PATH);    
      path.SetLength(GetCurrentDirectory(MAX_PATH,path.c_str()));    
      return   path;    

// return ExtractFilePath(Application->ExeName);
// return ExtractFilePath(ParamStr(0));
}

void Jpg2Bmp(String JpgFile, String BmpFile) //将Jpg文件转换为Bmp文件
{

      TJPEGImage   *MyJPEG   =   new   TJPEGImage;    
      try    
      {    
              MyJPEG->LoadFromFile(JpgFile);   //图片位置    
              Graphics::TBitmap   *MyBMP   =   new   Graphics::TBitmap;    
              MyBMP->Assign(MyJPEG);    
              MyBMP->SaveToFile(BmpFile);           //保存路径    
              delete   MyBMP;    
      }    
      __finally    
      {    
              delete   MyJPEG;    
      }    

}

void Bmp2Jpg(String BmpName, String JpgName) //将bmp文件转换为jpg文件
{

      Graphics::TBitmap   *MyBMP   =   new   Graphics::TBitmap;    
      try    
      {    
              MyBMP->LoadFromFile(BmpName);   //图片位置    
              TJPEGImage   *MyJPEG   =   new   TJPEGImage;    
              MyJPEG->Assign(MyBMP);    
              MyJPEG->CompressionQuality   =   60;   //压缩比例   1..100    
              MyJPEG->Compress();    
              MyJPEG->SaveToFile(JpgName);         //保存路径    
              delete   MyJPEG;    
      }    
      __finally    
      {    
              delete   MyBMP;    
      }    

}

// 开机后自动运行程序设置
#include <Registry.hpp>
void __fastcall AutoRunFromStart(bool Set,AnsiString Title, AnsiString ExeFile)
{

      TRegistry   *Reg;    
      Reg   =   new   TRegistry();    
      Reg->RootKey   =   HKEY_LOCAL_MACHINE;    
      if(Set)    
      {    
              if(Reg->OpenKey("SOFTWARE//Microsoft//Windows//CurrentVersion//Run",false))    
                      Reg->WriteString(Title,ExeFile);    
              delete   Reg;    
      }    
      else    
      {    
              if(Reg->OpenKey("SOFTWARE//Microsoft//Windows//CurrentVersion//Run",false))    
                      Reg->WriteString(Title,";   "   +   ExeFile);    
      }    
      delete   Reg;    

}
// 根据窗口句柄获得窗口的Caption
AnsiString GetWndCaption(HWND hWnd)
{

      AnsiString   strCaption;    
      if(hWnd)    
      {    
              int   Length   =   (int)SendMessage(hWnd,WM_GETTEXTLENGTH,0,0);    
              if(Length)    
              {    
                      char   *buf   =   new   char[Length+2];    
                      buf[Length]   =   '/0';    
                      buf[Length+1]   =   '/0';    
                      SendMessage(hWnd,WM_GETTEXT,Length+1,(LPARAM)buf);    
                      strCaption   =   AnsiString(buf);    
                      delete   buf;    
              }    
      }    
      return   strCaption;    

}

// 根据窗口句柄获得窗口的类名
AnsiString GetWndClassName(HWND hWnd)
{

      char   buffer[256];    
      GetClassName(hWnd,buffer,255);    
      return   AnsiString(buffer);    

}

// 窗口位于最上
void __fastcall SetStayOnTop(bool Set,void *Handle)
{

      if(Set)    
              SetWindowPos(Handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);    
      else    
              SetWindowPos(Handle,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);    

}
// 是否显示在任务栏
void __fastcall ShowOnTaskbar(bool Set,void *Handle)
{

      if(Set)    
              ShowWindow(Handle,SW_SHOW);    
      else    
              ShowWindow(Handle,SW_HIDE);    

}
// 获得子网掩码
#include <Registry.hpp>
AnsiString GetSubnetMask()
{

      AnsiString   SubnetMask;    
      TRegistry   *reg   =   new   TRegistry;    
      DWORD   Version   =   GetVersion();    
      if(Version   <   0x80000000)   //WindowsNT    
      {    
              reg->RootKey   =   HKEY_LOCAL_MACHINE;    
              if(reg->OpenKeyReadOnly("SYSTEM//CurrentControlSet//Services//Tcpip//Linkage"))    
              {    
                      int   BuffLength   =   reg->GetDataSize("Bind");    
                      char   *Buff   =   new   char[BuffLength+1];    
                      reg->ReadBinaryData("Bind",Buff,BuffLength);    
                      AnsiString   Interface   =   (AnsiString)Buff;    
                      Interface   =   Interface.SubString(9,Interface.Length()-8);    
                      delete   []   Buff;    
                      reg->CloseKey();    

                      if(reg->OpenKeyReadOnly("SYSTEM//CurrentControlSet//Services//"+Interface+"//Parameters//Tcpip"))    
                      {    
                              BuffLength   =   reg->GetDataSize("SubnetMask");    
                              Buff   =   new   char[BuffLength+1];    
                              reg->ReadBinaryData("SubnetMask",Buff,BuffLength);    
                              SubnetMask   =   (AnsiString)Buff;    
                              delete   []   Buff;    
                      }    
              }    
      }    
      else   //Windows9X    
      {    
              int   i;    
              reg->RootKey   =   HKEY_LOCAL_MACHINE;    
              TStringList   *ent   =   new   TStringList;    
              if(reg->OpenKeyReadOnly("System//CurrentControlSet//Services//Class//NetTrans"))    
                      reg->GetKeyNames(ent);    
              reg->CloseKey();    
              for(i=0;i<ent->Count   ;i++)    
              {    
                      reg->CloseKey();    
                      if(reg->OpenKeyReadOnly("System//CurrentControlSet//Services//Class//NetTrans//"   +ent->Strings[i]))    
                      {    
                              AnsiString   ip   =   reg->ReadString("IPAddress");    
                              AnsiString   node   =   reg->ReadString("NodeType");    
                              if(ip   !=   "0.0.0.0"   &&   ip   !=   ""   &&   node   ==   "1")    
                              {    
                                      SubnetMask   =   reg->ReadString("IPMask");    
                                      if(SubnetMask   !=   ""   &&   SubnetMask   !=   "0.0.0.0")    
                                              break;    
                              }    
                      }    
              }    
              delete   ent;    
      }    
      delete   reg;    
      return   SubnetMask;    

}

include<winsock.h>

AnsiString GetLocalIP()
{

      //Start   up   WinSock    
      WORD   wVersionRequested   =   MAKEWORD(1,1);;    
      WSADATA   wsaData;    
      WSAStartup(wVersionRequested,   &wsaData);    

      hostent   *p;    
      char   s[128];    
      char   *p2;    
      gethostname(s,128);//获取指定计算机的名字    
      p   =   gethostbyname(s);    
      p2   =   inet_ntoa(*((in_addr   *)p->h_addr));   //获取指定计算机的IP地址    
      WSACleanup();    
      return   p2;    

}
// 打开、关闭光驱
#include "mmsystem.h"
void CDRomOpen(BOOL bOpenDrive,TCHAR cDrive)
{

      MCI_OPEN_PARMS   open;    
      MCI_STATUS_PARMS   status;    
      DWORD   flags;    
      TCHAR   szDriveName[4];    
      strcpy(szDriveName,"?:");    
      ::ZeroMemory(&open,sizeof(MCI_OPEN_PARMS));    
      open.lpstrDeviceType   =   (LPCSTR)MCI_DEVTYPE_CD_AUDIO;    
      szDriveName[0]   =   cDrive;    
      open.lpstrElementName   =   szDriveName;    
      flags   =   MCI_OPEN_TYPE   +   MCI_OPEN_TYPE_ID   +   MCI_OPEN_ELEMENT   +   MCI_OPEN_SHAREABLE;    
      if(!mciSendCommand(0,MCI_OPEN,flags,(unsigned   long)&open))    
      {    
              status.dwItem   =   MCI_STATUS_READY;    
              if(bOpenDrive)    
                      mciSendCommand(open.wDeviceID,MCI_SET,MCI_SET_DOOR_OPEN,0);    
              else    
                      mciSendCommand(open.wDeviceID,MCI_SET,MCI_SET_DOOR_CLOSED,0);    
              mciSendCommand(open.wDeviceID,MCI_CLOSE,MCI_WAIT,0);    
      }    

}
// 获得端口
#include <Registry.hpp>
void __fastcall GetPort(TStrings *List)
{

      TRegistry   *reg   =   new   TRegistry;    
      reg->RootKey   =   HKEY_LOCAL_MACHINE;    
      reg->OpenKey("HARDWARE//DEVICEMAP//SERIALCOMM",true);    
      reg->GetValueNames(List);    
      List->BeginUpdate();    
      for(int   i=0;i<List->Count;i++)    
              List->Strings[i]   =   reg->ReadString(List->Strings[i]);    
      List->EndUpdate();    
      delete   reg;    

}

// 结束一个进程
void __fastcall ProcessKill(int pPid)
{

      HANDLE   ps   =   OpenProcess(1,false,pPid);    
      if(ps   &&   TerminateProcess(ps,-9))    
      {    
              MessageBox(Handle,"中止成功!","信息",MB_OK|MB_ICONINFORMATION);    
      }    
      else    
      {    
              MessageBox(Handle,"中止失败!","信息",MB_OK|MB_ICONWARNING);    
      }    

}
String __fastcall TfrmTest::GetVersionInfo(String FileName)
{
/

  函数名:GetVersionInfo  
  用途:返回指定文件的版本信息  

/

      FileName=ExtractFilePath(Application->ExeName)+FileName;  
      if(!FileExists(FileName))  
      {  
        //将要更新的文件不存在  
        return   0;  
      }  
      //首先获得版本信息资源的长度  
        DWORD   dwHandle,InfoSize;  
        String   strVer;  
        InfoSize   =   GetFileVersionInfoSize(FileName.c_str(),&dwHandle);  
        //将版本信息资源读入缓冲区  
        char   *InfoBuf   =   new   char[InfoSize];  
        GetFileVersionInfo(FileName.c_str(),0,InfoSize,InfoBuf);  
        //获得生成文件使用的代码页及字符集信息  
        char   *pInfoVal;  
        unsigned   int   dwInfoValSize;  
        try  
        {  
          VerQueryValue(InfoBuf,"//VarFileInfo//Translation",&((void   *)pInfoVal),   &dwInfoValSize);  
          AnsiString   V   =   "//StringFileInfo//"   +IntToHex(*((unsigned   short   int   *)   pInfoVal),4)   +IntToHex(*((unsigned   short   int   *)   &pInfoVal[2]),4)+   "//FileVersion";  
          //获得具体的版本号  
          VerQueryValue(InfoBuf,   V.c_str(),&((void   *)pInfoVal),&dwInfoValSize);  
          strVer=AnsiString(pInfoVal).SetLength(dwInfoValSize-1);  
          delete   InfoBuf;  
        }  
        catch(...)  
        {  
          return   0;  
        }  
        if(strVer.Length()>10)  
        {  
          return   0;  
        }  
        String   TmpStr;  

//截取.

        for   (int   i=1;i<=strVer.Length();i++)  
        {  
            if(strVer.SubString(i,1)!=".")  
            {  
              TmpStr=TmpStr+strVer.SubString(i,1);  
            }  
            else   if((strVer.SubString(i,1)==".")&&(i==2))  
            {  
              TmpStr=TmpStr+strVer.SubString(i,1);  
            }  
        }  

//截取,

        if(strVer.Pos(",")!=0)  
          {  
            TmpStr="";  
            for   (int   i=1;i<=strVer.Length();i++)  
            {  
              if((strVer.SubString(i,1)!=",")&&(strVer.SubString(i,1)!="   "))  
              {  
                TmpStr=TmpStr+strVer.SubString(i,1);  
              }  
              else   if((strVer.SubString(i,1)==",")&&(i==2))  
              {  
                TmpStr=TmpStr+".";  
              }  
          }  
        }  

        strVer=TmpStr;  
        return   strVer;  

}

The socket components are not installed by default. To use the socket components, you must install the dclsockets<.bpl> package.

To install the socket components:

Select Component > Install Packages.
In the Install Packages dialog box, click Add.
In the Add Design Package dialog, browse to C:Program Files (x86)EmbarcaderoStudio22.0bin.
Select dclsockets.bpl, and click Open.
Click OK to dismiss Install Packages dialog.
The socket components (TClientSocket and TServerSocket) are listed in the Internet category of the Toot Palette.
Note: These steps are one-time installation instructions. The socket components should be available for all future projects.