您现在的位置:首页 >> 网络通讯 >> 网络通讯 >> 内容

基于WinSocket的单线程Client的实现

时间:2011/9/3 15:14:14 点击:

  核心提示:功能描述:建立与Socket服务器之间的连接,向服务器端发送数据,并接收来自服务器端的数据。并利用Winsock实现不同编程语言之间的通讯。调用顺序:WSAStartup:开始对WS2_32.dll的...
功能描述: 建立与Socket服务器之间的连接,向服务器端发送数据,并接收来自服务器端的数据。并利用Winsock实现不同编程语言之间的通讯。 调用顺序:  WSAStartup开始对WS2_32.dll的使用  socket创建一个socket。 connect:连接至服务器。 send向指定socket发送数据。  recv从指定的socket接收数据。  WSACleanup关闭对WS2_32.dll的使用。 声明部分: zWsaData : TWSAData; //WSADATA数据结构 zSocket : TSOCKET; //定义Socket zClientService: sockaddr_in; //定义地址信息 procedure CheckRc(str : PChar); 实现部分: procedure TForm1.Button2Click(Sender: TObject); var
nSendBytes : Integer; //Num of send data      nRecvBytes : Integer; //Num of receive data      szSendBuf : PChar;     //char Data to send
strSendBuf: string;    //string data to send
szRecvBuf : array[0..260] of Char; //buf to receive data
nRc : Integer;         //Reture code of WSA_fucntion begin
//启动WS2_32.dll
nRc := WSAStartup(MakeWord(2,2),zWSAData);
CheckRc('WSAStartup');
//创建一个Socket
zSocket := socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
if zSocket = INVALID_SOCKET then
begin
   CheckRc('socket');
end;
//连接至C服务器程序
zClientService.sin_family := AF_INET;
zClientService.sin_addr.S_addr := inet_addr('127.0.0.1');
zClientService.sin_port := htons(27002);
nRc := connect(zSocket,zClientService,SizeOf(zClientService));
if nRc = SOCKET_ERROR then
begin
   CheckRc('connect');
   WSACleanup();
end;
//send & receive data
szSendBuf := 'Data from delphi Client';
strSendBuf := 'data from delphi';
//发送的数据为string类型
//nSendBytes := send(zSocket,strSendBuf[1],length(strSendBuf),0);
 
//发送的数据为char
nSendBytes := send(zSocket,szSendBuf[0],length(szSendBuf),0);
self.ListBox1.Items.Add('Num of Send = ' + IntToStr(nSendBytes));
 
//接收从C服务器发送的数据
nRecvBytes := recv(zSocket,szRecvBuf,260,0);
if nRecvBytes < 0 then
    Exit;
 if nRecvBytes = -1 then
     CheckRc('recv');
//在组件中显示接收到的信息
self.ListBox1.Items.Add('NumOfRecv = ' + IntToStr(nRecvBytes));
self.ListBox1.Items.Add(szRecvBuf);
//Cleanup
WSACleanup(); end;

作者:网络 来源:转载
共有评论 0相关评论
发表我的评论
  • 大名:
  • 内容:
  • 盒子文章(www.2ccc.com) © 2022 版权所有 All Rights Reserved.
  • 沪ICP备05001939号