3,881
社区成员
发帖
与我相关
我的任务
分享
WSADATA wsaData;
WSAStartup( MAKEWORD(2,2) , &wsaData );
SOCKET cli , ser;
SOCKADDR_IN sera , clia;
int clin = sizeof( SOCKADDR );
ZeroMemory( &sera , sizeof(sera) );
ZeroMemory( &clia , sizeof(clia) );
sera.sin_family = AF_INET;
sera.sin_port = htons( 10080 );
sera.sin_addr.S_un.S_addr = ADDR_ANY;
ser = socket( AF_INET , SOCK_STREAM , 0 );
if( ser == INVALID_SOCKET ){
cout << "Cannot init socket!\n";
return 0;
}
if( 0 != bind( ser , (SOCKADDR*)(&sera) , sizeof(SOCKADDR) ) ){
cout << "Cannot bind!\n";
printf("Error code:%d\n",WSAGetLastError());
closesocket( ser );
return 1;
}
if( 0 != listen( ser , 5 ) ){
cout << "Cannot listen!\n";
printf("Error code:%d\n",WSAGetLastError());
closesocket( ser );
return 1;
}
const char wav[] = "Hello Client!";
char* rwav = new char[sizeof(wav)];
ZeroMemory( rwav , sizeof(wav) );
cli = accept( ser , (SOCKADDR*)(&clia) , &clin );
if( cli == INVALID_SOCKET ){
cout << "Cannot init acc-socket!\n" << "Error code:";
printf( "0x%x" , WSAGetLastError() );
closesocket( ser );
return 1;
}
cout << "Prepared for transmitting!\nsizeof(wav)=" << sizeof(wav) << endl;
if( SOCKET_ERROR == send( cli , wav , sizeof(wav) , 0 ) ){
cout << "Failed to send!\n";
printf("Error code:%d\n",WSAGetLastError());
closesocket( ser );
closesocket( cli );
return 1;
}
int rcvnum;
rcvnum = recv( cli , rwav , sizeof(wav) , 0 );
if( rcvnum != sizeof(wav) ){
if( rcvnum <= 0 ){
cout << "Error occurred:" << rcvnum << endl;
return 1;
}
else{
cout << "Length not enough:" << rcvnum << endl;
return 1;
}
}
cout << "Client returned:" << rwav << endl;
getch();
delete[] rwav;
closesocket( cli );
closesocket( ser );
WSACleanup();
WSADATA wsaData;
WSAStartup( MAKEWORD(2,2) , &wsaData );
SOCKET ser;
SOCKADDR_IN sera;
ser = socket( AF_INET , SOCK_STREAM , 0 );
ZeroMemory( &sera , sizeof(sera) );
sera.sin_family = AF_INET;
sera.sin_port = htons( 10080 );
sera.sin_addr.S_un.S_addr = inet_addr( "127.0.0.1" );
if( 0 != connect( ser , (SOCKADDR*)(&sera) , sizeof(SOCKADDR) ) ){
cout << "Cannot connect to server!\n";
printf("Error code:%d\n",WSAGetLastError());
return 1;
}
// "Hello Server!"
const char* wav = "Hello Server!";
char* rwav = new char[sizeof(wav)];
ZeroMemory( rwav , sizeof(wav) );
recv( ser , rwav , sizeof(wav) , 0 );
cout << "Server sent:" << rwav;
getchar();
send( ser , wav , sizeof(wav) , 0 );
getch();
delete[] rwav;
WSACleanup();