
Developer
 
Профиль
Группа: Участник
Сообщений: 879
Регистрация: 28.4.2004
Где: Ukraine
Репутация: нет Всего: 11
|
Что не так. Сервер не получает сообщение. Помогите, пожайлуста... Сервер: | Код | #include <winsock2.h> #include <windows.h>
#pragma comment(lib, "ws2_32.lib")
#define PORT 4736 WSADATA wsd;
DWORD WINAPI ReadThreadPrc(LPVOID lpParam) { SOCKET sock = SOCKET(lpParam); WSABUF wsaBuf; char st[10]; wsaBuf.buf = st; wsaBuf.len = 6; DWORD dwRes; while (1) { if (!WSARecv(sock, &wsaBuf,1, &dwRes, 0, 0, 0)) { MessageBox(NULL, wsaBuf.buf, "Hello", 0); } } closesocket(sock); return 0; }
INT WINAPI WinMain(HINSTANCE hInstm, HINSTANCE hPrevInst, LPSTR lpCmdLine, INT nCmdShow) { SOCKET sct; int iErr; if (WSAStartup(MAKEWORD(2, 2), &wsd)) { MessageBox(NULL, "Error load Winsock2", "Error", MB_ICONERROR); return 1; } sct = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, NULL, 0); if (sct == INVALID_SOCKET) { MessageBox(NULL, "An error was appeared during creating a socket", "ERROR", MB_ICONERROR); return 2; } SOCKADDR_IN sca, sca_cl; sca.sin_family = AF_INET; sca.sin_port = htons(PORT); sca.sin_addr.s_addr = htonl(INADDR_ANY); bind(sct, (sockaddr *)&sca, sizeof(sca)); if (listen(sct, SOMAXCONN)) { MessageBox(NULL, "Listen returned error", "Error", MB_ICONERROR); iErr = WSAGetLastError(); closesocket(sct); return 3; } int iSz = sizeof(sca_cl); HANDLE hThread; SOCKET sClient; while (1) { sClient = WSAAccept(sct, (sockaddr *)&sca_cl, &iSz, NULL, NULL); if (sClient == INVALID_SOCKET) { iErr = WSAGetLastError(); MessageBox(NULL, "An error was appeared during Accept socket", "ERROR", MB_ICONERROR); } hThread = CreateThread(NULL, NULL, ReadThreadPrc, (LPVOID)sClient, NULL, NULL); } CloseHandle(hThread); closesocket(sct); return 0;
} |
Клиент: | Код | #include <winsock2.h> #include <windows.h>
#pragma comment(lib, "ws2_32.lib")
#define PORT 4736 #define INETADDR "127.0.0.1"
INT WINAPI WinMain(HINSTANCE hInstm, HINSTANCE hPrevInst, LPSTR lpCmdLine, INT nCmdShow) { WSADATA wsd; SOCKET sct; if (WSAStartup(MAKEWORD(2, 2), &wsd)) { MessageBox(NULL, "Error load Winsock2", "Error", MB_ICONERROR); return 1; } sct = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, NULL, 0); if (sct == INVALID_SOCKET) { MessageBox(NULL, "An error was appeared during creating a socket", "ERROR", MB_ICONERROR); closesocket(sct); return 2; } SOCKADDR_IN sca; sca.sin_family = AF_INET; sca.sin_port = htons(PORT); sca.sin_addr.s_addr = inet_addr(INETADDR); if (WSAConnect(sct, (sockaddr *)&sca, sizeof(sca), NULL, NULL, 0, 0)) { MessageBox(NULL, "An error was appeared during connect", "ERROR", MB_ICONERROR); int t =WSAGetLastError(); if (t ==WSAECONNREFUSED) MessageBox(NULL, "The attempt to connect was rejected", "ERROR", MB_ICONERROR);
closesocket(sct); return 2; } WSABUF wsaBuf; wsaBuf.buf = "Hello"; wsaBuf.len = strlen("Hello")+1; DWORD nSend; if (WSASend(sct, &wsaBuf, 1, &nSend, 0, NULL, NULL)) { int iErr = WSAGetLastError(); if (iErr == WSAENOBUFS) MessageBox(NULL, "Send Error; The Windows Sockets provider reports a buffer deadlock.", "ERROR", MB_ICONERROR); } closesocket(sct); return 0;
}
|
Это сообщение отредактировал(а) devmstr - 30.5.2006, 05:48
--------------------
Think different ©Steve Jobs 
|