4.4.7 发送数据

本文介绍了在服务器端如何向客户端发送数据,特别是在一个socket服务器中。通过SendLine函数,服务器能够发送‘Hello,Client!/n’的问候语。当send()函数返回错误时,程序会捕获错误代码并显示相应的错误信息,如未连接、已关闭或超时等。" 79666549,6730608,使用libiconv在64位Linux下转换GBK到UTF-8,"['Linux', '编码', 'libiconv', 'GBK', 'UTF-8']

  显示客户端问候语之后,服务器向客户端发送应答。SendLine()函数用于发送数据。

         //向客户端发送数据

         strcpy(bufSend, "Hello,Client!/n");

         if (!SendLine(sClient, bufSend))

         {

                   return        ExitClient(SERVER_API_ERROR);

         }

SendLine函数中,调用send()函数将"Hello,Client!/n"字符串发送给客户端。当该函数返回SOCKET_ERROR时,调用WSAGetLastError()函数得到错误代码,并调用ShowSocketMsg()函数将错误的字符串显示出来。SendLine()函数程序清单如下。

 

/*

 *      发送一行数据

 */

BOOL        SendLine(SOCKET s, char* str)

{

         int retVal;//返回值

         retVal = send(s, str, strlen(str), 0);                       //一次发送

 

         //错误处理

         if (SOCKET_ERROR == retVal)

         {

                   int nErrCode = WSAGetLastError();            //错误代码

                   if (WSAENOTCONN == nErrCode)

                   {

                            ShowSocketMsg("The socket is not connected!");

                           

                   }else if(WSAESHUTDOWN == nErrCode)

                   {

                            ShowSocketMsg("The socket has been shut down!");

                           

                   }else if (WSAETIMEDOUT == nErrCode)

                   {

                            ShowSocketMsg("The connection has been dropped!");

                   }else{}      

                  

                   return FALSE;                                                  //发送失败

         }

        

         return TRUE;                                                            //发送成功

}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值