Vill lära mig hur winsock (eller om det är winsock2 jag ska använda) fungerar och tänkte att göra en chat eller nåt litet projekt vore en bra början. Men då kom jag på att jag inte hade en aning om hur man gör. Så var kan jag lära mig? Finns det några bra toturials?
Göra en chat
4 svar · 297 visningar · startad av Alpha II
http://www.sockaddr.com/ExampleSourceCode.html
MSDN är ju annars det bästa källan (enligt mig):
Platform SDK
Networking and Directory Services
Network Protocols
Windows Sockets Version 2
Hoppades på att det skulle fungera men det gjorde det inte :(
Har inte riktigt greppat hur sockets fungerar och om jag kanske behöver en liste socket här och om jag på ngt sätt måste använda accept()?!
#include <iostream>
#include <windows.h>
#include <winsock.h>
using namespace std;
void sleep(int);
bool server_started=false;
int main(int argc, char **argv)
{
system("cls");
cout << "*******************************************\n";
cout << "* CHAT XXS *\n";
cout << "*******************************************\n";
cout << "\n";
char ip[25];
cout << "Connect to IP: ";
cin >> ip;
int port = 5757;
WSADATA w;
WSAStartup(0x0202, &w);
LPHOSTENT lpHostEntry;
lpHostEntry = gethostbyname(ip);
SOCKET remote_socket;
remote_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
SOCKADDR_IN sa_server;
sa_server.sin_family = AF_INET;
sa_server.sin_addr = *((LPIN_ADDR)*lpHostEntry->h_addr_list);
sa_server.sin_port = htons(port);
connect(remote_socket, (LPSOCKADDR)&sa_server, sizeof(struct sockaddr));
char buffer[256];
bool done=false;
do
{
memset(buffer, 0, sizeof(buffer));
recv(remote_socket, buffer, sizeof(buffer), 0);
printf("\nResponse: %s\n", buffer);
printf("Send: ");
cin >> buffer;
if(!strcmp(buffer,"exit"))
done = true;
else
send(remote_socket, buffer, sizeof(buffer), 0);
} while(!done);
closesocket(remote_socket);
WSACleanup();
return 0;
}
void sleep(int ms)
{
int start = GetTickCount();
while(start+ms>GetTickCount());
}
Jag hoppas att detta kan hjälpa dig (bifogad fil), det är som du ser inte helt komplett och det finns säkert en hel del andra sätt att göra det på, men se det som en bra start punkt.