客户端将一个txt文件中的全部数据整合成一个字符串然后打包发送给服务器
Socket通讯
Client端:
void CClientDlg::ClientInit(CDC* pDC,CRect rCell)
{
WSADATA wsaData;
int iPort = 9999;
int err;
err = WSAStartup(MAKEWORD(2,2),&wsaData);
if (err!=0)
{
return;
}
SOCKET sockClient;
sockClient = socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN ServerAddr;
memset(&ServerAddr,0,sizeof(ServerAddr));
ServerAddr.sin_family = AF_INET;
ServerAddr.sin_port = htons(iPort);
ServerAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
connect(sockClient,(SOCKADDR*)&ServerAddr,sizeof(ServerAddr));
FILE* fDataFile;
char* sData;
int i,ch;
sData = new char(1000*sizeof(char));
fDataFile = _wfopen(L"data.txt",L"r");
ch = fgetc(fDataFile);
for (i=0;feof(fDataFile)==0;i++)
{
sData[i] = (char)ch;
ch = fgetc(fDataFile);
}
send(sockClient,sData,1000,0);
closesocket(sockClient);
WSACleanup();
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
server端:
void CServerDlg::OnPaint()
{
CPaintDC dc(this);
CRect rClient;
GetClientRect(rClient);
struct sockaddr_in serveraddr;
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2,2),&wsaData) !=0)
{
return ;
}
SOCKET socketServer;
socketServer = socket(AF_INET,SOCK_STREAM,0);
memset(&serveraddr,0,sizeof(serveraddr));
serveraddr.sin_family = AF_INET;
serveraddr.sin_port = htons(9999);
serveraddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
bind(socketServer,(SOCKADDR*)&serveraddr,sizeof(serveraddr));
listen(socketServer,1);
char cData[10000];
struct sockaddr_in cliaddr;
int len = sizeof(cliaddr);
accept(socketServer,(SOCKADDR*)&cliaddr,&len);
recv(socketServer,cData,10000,0);
CString sText;
sText.Format(L"%s",cData);
dc->DrawText(sText,rClient,DT_CENTER);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
目的:
客户端打开一个txt文件,然后将里面的所有内容全部整合到一个字符串中,将这个字符串发送给服务器,服务器接收到这个字符串,然后显示出来。
但是服务器收到的显示缺是一堆乱码....哪错了?