| Цитата(SoulSeeker @ 21.11.2008, 17:42) | Есть сервер. При попытке отослать на него что-нибудь происходят разные вещи, а именно: при подключении виндовским telnet'ом при наборе текст отсылается по одному символу при каждом нажатии, если то же самое сделать через putty, то строка отсылается по нажатии ентер, но вдогонку ей летит еще три сообщения с непонятным мусором. Как быть в такой ситуации?
Код:
| Код | #include <iostream> #include <string.h> #include <string> #include <winsock.h> #pragma hdrstop #pragma comment(lib, "Ws2_32.lib")
#define SERVER_GREETS "You were connected to localhost. Welcome." #define SERVER_BUY "You were disconnected from localhost. Buy." #define SERVER_PORT 1234
using namespace std; int main () { string s; int err; WSAData WsData; if (err=WSAStartup(WsData.wVersion, &WsData)){ cout << "Error"; return 0; } SOCKET ServerSocket=socket(AF_INET, SOCK_STREAM, 0); sockaddr_in SA; SA.sin_family=AF_INET; SA.sin_addr.S_un.S_addr=INADDR_ANY; SA.sin_port=htons(SERVER_PORT); bind(ServerSocket, (sockaddr*)&SA, sizeof(SA)); listen(ServerSocket, SOMAXCONN); SOCKET AcceptSocket; cout << "Wating for connection..." << endl; while ((AcceptSocket=accept(ServerSocket, 0, 0))!=INVALID_SOCKET){ cout << "connected...\n"; send(AcceptSocket, SERVER_GREETS, strlen(SERVER_GREETS), 0); char RecvData[32]={' '}; int recvResult=0; do{ recvResult = recv(AcceptSocket, RecvData, 32, 0); cout << "Look! I've got a message: " << RecvData << endl; }while (recvResult); send(AcceptSocket, SERVER_BUY, strlen(SERVER_BUY), 0); cout << "Disconnected" << endl; cout << "Wating for connection..." << endl; closesocket(AcceptSocket);
} }
|
|
Это особенности работы клиентов, telnet виндовский отсылает каждый символ при нажатии,так уж он устроен,а putty только по нажатию энтера.А вот что там за мусор летит,не понятно,посмотреть бы что именно там приходит,может служебные символы какие. |