/* filename:sever.cpp
maker:brightboyqiang
date:2007-5-23
*/
#include <stdio.h>
#include<math.h>
#include "winsock2.h"
#pragma comment( lib, "Ws2_32.lib" )
int length(int a);
void main()
{
WSADATA wsaData;
int iResult = WSAStartup( MAKEWORD(2,2), &wsaData );
if ( iResult != NO_ERROR )
printf("Error at WSAStartup()\n");
SOCKET m_socket;
m_socket = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
if ( m_socket == INVALID_SOCKET )
{
printf( "Error at socket(): %ld\n", WSAGetLastError() );
WSACleanup();
return;
}
sockaddr_in service;
service.sin_family = AF_INET;
service.sin_addr.s_addr = inet_addr( "127.0.0.1" );
service.sin_port = htons( 27015 );
if ( bind( m_socket, (SOCKADDR*) &service, sizeof(service) ) == SOCKET_ERROR )
{
printf( "bind() failed.\n" );
closesocket(m_socket);
return;
}
if ( listen( m_socket, 1 ) == SOCKET_ERROR )
printf( "Error listening on socket.\n");
SOCKET AcceptSocket;
printf( "Waiting for a client to connect...\n" );
while (1) {
AcceptSocket = SOCKET_ERROR;
while ( AcceptSocket == SOCKET_ERROR )
{
AcceptSocket = accept( m_socket, NULL, NULL );
}
printf( "Client Connected.\n");
m_socket = AcceptSocket;
break;
}
int bytesSent;
int revlength;
int bytesRecv = SOCKET_ERROR;
char sendbuf[32] = "CRC is successful!";
char sendbuf1[32]="CRC is not successful!";
char recvbuf[32] = "";
bytesRecv = recv( m_socket, recvbuf, 32, 0 );
revlength=strlen(recvbuf);
int i=0,j=0,a=0,b=0;
char c[32];
printf("%s",recvbuf);
printf("\n");
for(i=0;i<=revlength-1;i++)
{
j=recvbuf[i]-48;
a+=(int)(j*pow(2,revlength-i-1));
}
printf("请输入生成多项式:");
scanf("%s",c);
int charlength;
charlength=strlen(c);
for(i=0;i<=charlength-1;i++)
{
j=c[i]-48;
b+=(int)(j*pow(2,charlength-i-1));
}
int n1=length(a);
int n2=length(b);
int n3=n2;
a=a<<(n2-1);
b=b<<(n1-1);
a=a^b;
while(a>pow(2,n3-1)-1)
{
n1=length(a);
n2=length(b);
b=b>>(n2-n1);
a=a^b;
}
if(a==0) bytesSent = send( m_socket, sendbuf,strlen(sendbuf), 0 );
else bytesSent=send(m_socket,sendbuf1,strlen(sendbuf1),0);
printf( "Bytes Sent: %ld\n", bytesSent );
}
int length(int a)
{
int i=20;
while(!(a>=pow(2,i) && a<pow(2,i+1)))
{
i--;
}
return i+1;
}
CRC.rar_ crc client server_crc
版权申诉
142 浏览量
2022-09-23
07:20:05
上传
评论 1
收藏 3KB RAR 举报
小波思基
- 粉丝: 74
- 资源: 1万+