本来想做一个简单的通信程序,结果通信的信息显示的是一堆乱码,求解答
服务端程序
--------------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <string.h>
#include <winsock2.h>
#pragma comment (lib,"ws2_32")
int main (int argc,char *argv[])
{
WSADATA WsaData;
WSAStartup (MAKEWORD(2,2),&WsaData);
SOCKET s=socket (PF_INET,SOCK_STREAM,IPPROTO_TCP);
sockaddr_in address;
address.sin_family=PF_INET;
address.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
address.sin_port=htons(5000);
bind(s,(SOCKADDR*)&address,sizeof(SOCKADDR));
listen(s,5);
SOCKADDR clientaddr;
int nsize=sizeof(SOCKADDR);
SOCKET s2=accept(s,(SOCKADDR*)&clientaddr,&nsize);
char rbuff[256];
char sbuff[256];
while (1)
{
recv(s2,rbuff,strlen(rbuff),NULL);
printf("client say:%s\n",rbuff);
printf ("please enter message:");
scanf("%s",sbuff);
send(s2,sbuff,strlen(sbuff),NULL);
}
closesocket(s2);
closesocket (s);
WSACleanup();
return 0;
}
客户端程序
-------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <string.h>
#include <winsock2.h>
#pragma comment (lib,"ws2_32")
int main(int argc,char *argv[])
{
WSADATA wsadata;
WSAStartup(MAKEWORD(2,2),&wsadata);
SOCKET s=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);
sockaddr_in clientaddr;
clientaddr.sin_family=PF_INET;
clientaddr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
clientaddr.sin_port=htons(5000);
connect(s,(SOCKADDR*)&clientaddr,sizeof(SOCKADDR));
char rbuff[256];
char sbuff[256];
while(1)
{
printf("please enter message:");
scanf("%S",&sbuff);
send(s,sbuff,strlen(sbuff),NULL);
recv(s,rbuff,strlen(rbuff),NULL);
printf("server say:%s\n",rbuff);
}
closesocket(s);
WSACleanup();
return 0;
}