首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一个最初级的套接字有关问题

2012-02-26 
一个最初级的套接字问题charbuf[LINELEN]//#defineLINELEN128while(1){if(SOCKET_ERROR!recv(ssock,buf,

一个最初级的套接字问题
char   buf[LINELEN];//#define   LINELEN   128
while(1)
{
                          if(SOCKET_ERROR!=recv(ssock,buf,LINELEN,0))
  {
  printf( "%s ",buf);
  TCPdaytimed(ssock);
  (void)send(ssock,buf,LINELEN,0);
  }
}
这是服务器端的程序中的一段,在做好了前面的准备后,开始接受客户端传来的字符,怎么才能知道他传来的多长的字符串如果像上面的这个那每次都会将整个字符串所占据的区域中的字符串和乱码都输出的啊,

[解决办法]
while(1)
{
int i;
if(SOCKET_ERROR != (i = recv(ssock,buf,LINELEN,0)))
{
printf( "%s ",buf);
TCPdaytimed(ssock);
(void)send(ssock,buf,i,0);
}
}
[解决办法]
recv(ssock,buf,LINELEN,0))
你收到的并不一定是LINELEN,如果没有错误,返回的是收到的字节数
收到多少你才去输出多少
[解决办法]
int ret = recv(ssock,buf,LINELEN,0);
if (ret != SOCKET_ERROR)
{
buf[ret] = '\0 ';
.......
}

热点排行
Bad Request.