Ciao a tutti,
ho provato a svillupare un semplice client-server con Winsock che funziona in locale ma non su due diversi computer... Posto il codice, sperando che possiate aiutarmi!
Server:
codice:
#include <iostream>
#include <winsock.h>
#include <string.h>
using namespace std;
int main() {
short nPort = 2000;
char message[256];
char szBuf[256];
int nRet;
int nLen = sizeof(SOCKADDR);
WORD wRequested = MAKEWORD(1,1);
WSADATA wsaData;
nRet = WSAStartup(wRequested,&wsaData);
SOCKET xSocket;
xSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
SOCKADDR_IN saServer;
saServer.sin_family = AF_INET;
saServer.sin_addr.s_addr = INADDR_ANY;
saServer.sin_port = htons(nPort);
nRet = bind(xSocket, (LPSOCKADDR)&saServer, sizeof(struct sockaddr));
SOCKADDR_IN saClient;
loop:
memset(szBuf, 0, sizeof(szBuf));
nRet = recvfrom(xSocket, szBuf, sizeof(szBuf), 0, (LPSOCKADDR)&saClient, &nLen);
cout<< szBuf<< endl;
memset(szBuf, 0, sizeof(szBuf));
cout<< "\t";
cin.get(message, 256, '\n');
while(cin.get() != '\n');
strcpy(szBuf, message);
sendto (xSocket, szBuf, strlen(szBuf), 0, (LPSOCKADDR)&saClient, nLen);
goto loop;
closesocket (xSocket);
WSACleanup();
system("PAUSE");
}
------------------------------------
Client:
codice:
#include <winsock.h>
#include <iostream>
#include <string.h>
using namespace std;
int main() {
short nPort = 2000;
char szBuf[256];
int nRet;
int nLen = sizeof(SOCKADDR);
int nLen2;
char message[256];
WORD wRequested = MAKEWORD(1,1);
WSADATA wsaData;
nRet = WSAStartup(wRequested, &wsaData);
// LPHOSTENT lpHostEntry = gethostbyname("camcatie");
SOCKET xSocket;
xSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
SOCKADDR_IN saServer;
saServer.sin_family = AF_INET;
// saServer.sin_addr = *((LPIN_ADDR)*lpHostEntry->h_addr_list);
saServer.sin_addr.S_un.S_un_b.s_b1 = 10;
saServer.sin_addr.S_un.S_un_b.s_b2 = 0;
saServer.sin_addr.S_un.S_un_b.s_b3 = 0;
saServer.sin_addr.S_un.S_un_b.s_b4 = 1;
saServer.sin_port = htons(nPort);
loop:
memset(szBuf, 0, sizeof(szBuf));
recvfrom(xSocket, szBuf, sizeof(szBuf), 0, (LPSOCKADDR)&saServer, &nLen);
cout<< szBuf<< endl;
cout<< "\t";
cin.get(message, 256, '\n');
while (cin.get() != '\n');
memset(szBuf, 0, sizeof(szBuf));
strcpy(szBuf, message);
sendto(xSocket, szBuf, strlen(szBuf), 0, (LPSOCKADDR)&saServer, nLen);
goto loop;
closesocket(xSocket);
WSACleanup();
system("PAUSE");
}