Answer the question
In order to leave comments, you need to log in
Send WinSocket does not send a message to the server, what should I do?
I am using winsocket and winapi to develop "messenger". And send() from winsocket doesn't work with GetWindowText(). Here is the code:
GUI (when the button is clicked, the message entered in obj.hEDIT is sent)
case ID_BUTTON3:
{
char ip[32] = "127.0.0.1";
client(ip, 1111, obj.hWnd);
CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)CMH,NULL, NULL, NULL);
break;
}
#pragma comment(lib, "ws2_32.lib")
#pragma warning(disable: 4996)
#include <WinSock2.h>
#include <iostream>
#include <windows.h>
SOCKET hconnect;
int client(char ip[32], int port, HWND hwnd)
{
WSADATA wsa;
WORD DLLVersion = MAKEWORD(2, 1);
if (WSAStartup(DLLVersion, &wsa) != 0)
{
//std::cout << "Error 1" << std::endl;
exit(1);
}
SOCKADDR_IN addr;
int sizeaddr = sizeof(addr);
addr.sin_addr.s_addr = inet_addr(ip);
addr.sin_port = htons(port);
addr.sin_family = AF_INET;
SOCKET conect = socket(AF_INET,SOCK_STREAM, NULL);
if (connect(conect, (SOCKADDR*)&addr, sizeof(addr)) != 0)
{
//std::cout << "Error 1" << std::endl;
return 1;
}
//std::cout << "Connected!\n";
char msg[256];
hconnect = conect;
return 0;
}
char* clienthandler()
{
char msg[256];
recv(hconnect, msg, 256, NULL);
return msg;
}
int servermessage(char msg[256])
{
send(hconnect, msg, 256, NULL);
return 0;
}
#include <iostream>
#pragma comment(lib, "ws2_32.lib")
#pragma warning(disable: 4996)
#include <WinSock2.h>
SOCKET connectn[32];
int Counter = 0;
void ClientHandler(int index)
{
char msg[256];
while (true) {
recv(connectn[index], msg, sizeof(msg), NULL);
std::cout << msg << std::endl;
for (int i = 0; i < Counter; i++)
{
if (i == index) {
continue;
}
send(connectn[index], msg, sizeof(msg), NULL);
}
}
}
int main()
{
WSADATA wsa;
WORD DLLVersion = MAKEWORD(2, 1);
if (WSAStartup(DLLVersion, &wsa) != 0)
{
std::cout << "Error 1" << std::endl;
return 1;
}
int port;
char ip[32];
//127.0.0.1
//1111
std::cout << "ip: ";
std::cin >> ip;
std::cout << "port: ";
std::cin >> port;
SOCKADDR_IN addr;
int sizeaddr = sizeof(addr);
addr.sin_addr.s_addr = inet_addr(ip);
addr.sin_port = htons(port);
addr.sin_family = AF_INET;
SOCKET sListen = socket(AF_INET, SOCK_STREAM, NULL);
bind(sListen, (SOCKADDR*)&addr, sizeof(addr));
listen(sListen, SOMAXCONN);
SOCKET nConect;
for (int i = 0; i < 32; i++)
{
nConect = accept(sListen, (SOCKADDR*)&addr, &sizeaddr);
if (nConect == 0)
{
std::cout << "Error 2" << std::endl;
return 1;
}
else
{
std::cout << "Client Connected!\n";
connectn[i] = nConect;
Counter++;
CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)ClientHandler, (LPVOID)i, NULL, NULL);
}
}
char b;
std::cin >> b;
return 0;
}
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question