É em C++. Um amigo me falou que dava pra se basear nesse código de "Servidor que aguarda o cliente conectar": #include <WinSock2.h>
#include <stdio.h>
#include <conio.h>
int main() {
WORD versao; // Versão
WSADATA dados; // Dados da dll
int erro;
// Monta o número da versão
versao = MAKEWORD(2, 2);
erro = WSAStartup(versao, &dados);
if (erro != 0)
printf("Winsock não encontrado!\n");
else {
printf("Winsock ok\n");
printf("Estado: %s.\n", dados.szSystemStatus);
printf("Qtde Sockets: %u.\n", dados.iMaxSockets);
SOCKET m_socket;
// Parâmetros: internet, TCP, IPv4
m_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (m_socket == INVALID_SOCKET) {
printf("Erro no socket\n");
WSACleanup();
return 0;
}
sockaddr_in endereco;
endereco.sin_family = AF_INET;
endereco.sin_addr.s_addr = inet_addr("127.0.0.1");
endereco.sin_port = htons(44444);
erro = bind(m_socket, (SOCKADDR*) &endereco, sizeof(endereco));
if (erro == SOCKET_ERROR) {
printf("bind() falhou\n");
closesocket(m_socket);
WSACleanup();
return 0;
}
printf("bind() ok\n");
erro = listen(m_socket, 1);
if (erro == SOCKET_ERROR) {
printf("listen() falhou\n");
closesocket(m_socket);
WSACleanup();
return 0;
}
printf("Aguardando conexoes...\n");
SOCKET aceito;
while (1) {
aceito = SOCKET_ERROR;
while(aceito == SOCKET_ERROR) {
aceito = accept(m_socket, NULL, NULL);
}
printf("Conexao aceita!\n");
break;
}
int bytesEnviados;
int bytesRecebidos = SOCKET_ERROR;
char bufferEnvio[100];
char bufferRecebido[100] = "";
while (1)
{
bytesRecebidos = recv(aceito, bufferRecebido, 100, 0);
if (bytesRecebidos == SOCKET_ERROR)
printf("Servidor. Erro no recebimento.\n");
else
{
printf("Cliente: %s\n", bufferRecebido);
}
printf("Digite a mensagem:\n");
gets(bufferEnvio);
strcat(bufferEnvio,"\r\n");
bytesEnviados = send(aceito, bufferEnvio, strlen(bufferEnvio), 0);
}
WSACleanup();
}
getch();
}