========server端代码如下:========#include "stdio.h"
#include "winsock.h"void main()
{
int sock,msgsock,len,rval,status;
struct sockaddr tcpaddr;
char buf[20];
WSADATA wsaData; if((status=WSAStartup(0x0101,&wsaData))!=0)
{
printf("WSAStartup error");
exit(1);
} sock=socket(AF_INET,SOCK_STREAM,0);
if(sock<0)
{
printf("socket error");
exit(2);
} sockaddr_in sa;
sa.sin_family=AF_INET;
sa.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
sa.sin_port=htons(5050); if(bind(sock,(PSOCKADDR)&sa,sizeof(sa)) < 0)
{
printf("bind error");
exit(3);
} listen(sock,5);
len = sizeof(struct sockaddr); do
{
msgsock=accept(sock,(struct sockaddr *)&tcpaddr,(int *)&len);
if(msgsock == -1)
{
printf("accept error");
exit(4);
}
else 
do
{
memset(buf,0,sizeof(buf));
if(rval=recv(msgsock,buf,20,MSG_PEEK)<0)
{
printf("reading stream message");
}
if(rval==0)
{
printf("ending connection\n");
}
else
{
printf("-->%s\n",buf);
}
printf("msgsock = %d\n\n",msgsock); }while(rval!=0); closesocket(msgsock);
}while(1);

}========client端代码如下:========#include "stdio.h"
#include "winsock.h"
#define DATA "1234567890" void main(int argc,char* argv[])
{
int sock,status;
struct sockaddr_in server; server.sin_family=AF_INET;
server.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
server.sin_addr.S_un.S_addr=inet_addr("11.11.11.225"); //server端 IP
server.sin_port=htons(5050);
WSADATA wsaData; if((status=WSAStartup(0x0101,&wsaData))!=0)
{
printf("WSAStartup error");
exit(1);
}
sock=socket(AF_INET,SOCK_STREAM,0);  if(sock==INVALID_SOCKET)

printf("socket error");
exit(2);
} int connectcode = connect(sock,(struct sockaddr *)&server,sizeof(server));
if(connectcode<0)
{
printf("connect error");
exit(3);
} int sendcode = send(sock,DATA,sizeof(DATA),MSG_DONTROUTE);
if(sendcode < 0)
{ printf("send error");
exit(4);
}
closesocket(sock);
}server端始终只能接收到0字节,输出结果为:
ending connection
msgsock = 916请教高手,到底是哪儿出错了?