I modified my code as you guys suggested but it still doesn't work. Could any guru here point out directly what went wrong in my code? Thanks a lot.
Code:
// socket client
int _tmain(int argc, _TCHAR* argv[])
{
	WORD wVersionRequested = MAKEWORD(2,2);
	WSADATA data;

	if(WSAStartup(wVersionRequested, &data)!=0)
		return 1;

	SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

	if(sock == INVALID_SOCKET)
		return 1;

	sockaddr_in sa;
	sa.sin_family = AF_INET;
	sa.sin_addr.s_addr = inet_addr("127.0.0.1");
	sa.sin_port = htons(1101);

	if(connect(sock, (sockaddr*)&sa, sizeof(sa)) == SOCKET_ERROR)
		return 1;

	char buf[128];

	if(recv(sock, buf, sizeof(buf), 0) == SOCKET_ERROR)
		return 1;

	wchar_t wBuf[128];

	int len = mbstowcs(NULL,buf, 0); 
	mbstowcs(wBuf, buf, len+1);

	closesocket(sock);
	return 0;
}

// socket server

int _tmain(int argc, _TCHAR* argv[])
{
	WORD wVersionRequested;
	WSAData data;

	wVersionRequested = MAKEWORD(2,2);

	if(WSAStartup(wVersionRequested, &data) != 0)
		return 1;

	SOCKET sock = socket(AF_INET,SOCK_STREAM, IPPROTO_TCP);

	if(sock == INVALID_SOCKET)
		return 1;

	sockaddr_in sa;
	sa.sin_family = AF_INET;
	sa.sin_addr.s_addr = inet_addr("127.0.0.1");
	sa.sin_port = htons(1101);

	if(bind(sock, (sockaddr*)&sa, sizeof(sa)) != 0)
		return 1;

	if(listen(sock, 10) != 0)
		return 1;	

	if((sock = accept(sock, (sockaddr*)&sa, NULL)) == INVALID_SOCKET)
		return 1;

	wchar_t buffer[128];
	wcscpy(buffer, L"我们");
	int len = wcslen(buffer);
	
	if(send(sock, (char*)buffer, (len+1)*2, 0) == SOCKET_ERROR)
		return 1;

	closesocket(sock);
	return 0;
}