Here is my socket client and socket server implementation. The socket server tries to send unicode data to the socket client. But I didn't get it right at this time. Would any guru here point out what went wrong? Thanks a lot.
Code:
// 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;

	char buffer[128];
	strcpy(buffer, "我们");
	
	if(send(sock, buffer, strlen(buffer)+1, 0) == SOCKET_ERROR)
		return 1;

	closesocket(sock);
	return 0;
}

// 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, strlen(buf)+1, 0) == SOCKET_ERROR)
		return 1;

	closesocket(sock);
	return 0;
}