rendered paste body/* tcpsrv.c -- TCP server */
#include <winsock.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/file.h>
#include "sock.h"
#define MAXHOSSZ 80
char jelek[4] = "XO_";
int sock[2];
int err, flags=0;
// char state[15] = "______________";
char *state = "______________";
int aktpl;
void nextturn(int player) {
char imsg[MAXHOSSZ]="";
sprintf(imsg, "s:%s", state);
err = send( sock[player], imsg, strlen(imsg)+1, flags);
if(err<0){ error("%s: Cannot send to server\n", "Server"); exit(3); }
}
void sendmsg(char* msg, int player) {
char imsg[MAXHOSSZ]="";
sprintf(imsg, "m:%s", msg);
err = send( sock[player], imsg, strlen(imsg)+1, flags);
if(err<0){ error("%s: Cannot send to server\n", "Server"); exit(3); }
}
void parsecmd(char s[MAXHOSSZ]){
int i;
char *d;
char p;
d = strtok(s, ":");
if (strcmp(d, "l") == 0) {
i = atoi(strtok(NULL, ":")) - 1;
printf("x: %d\n", i);
p = state[i];
printf("y\n");
if (state[i] != '_') {
printf("z\n");
sendmsg("Ervenytelen lepes\n", aktpl);
nextturn(aktpl);
} else {
state[atoi(strtok(NULL, ":"))-1] = jelek[aktpl];
sendmsg(state, aktpl);
aktpl=1-aktpl;
nextturn(aktpl);
}
}
}
main( int argc, char** argv ){ /* arg count, arg vector */
/************* A hálózathoz szükséges deklarációk ***************/
int fd; /* socket endpt, rcv flags */
struct sockaddr_in server; /* socket name (addr) of server *//*cím család, port szám, internet cím*/
int server_size = sizeof server;/* length of the socket addr. server */
struct sockaddr_in client; /* socket name of client */
int client_size = sizeof client;/* length of the socket addr. client */
char buffer[BUFSIZE]; /* datagram dat buffer area */
int bytes=BUFSIZE; /* length of buffer */
int on = 1;
/************************ Start program *************************/
char sztring[BUFSIZE];
char recbuf[MAXHOSSZ];
int kesz=0;
aktpl=0;
WSADATA wsaData;
if (WSAStartup(MAKEWORD(1, 1), &wsaData) != 0) {
fprintf(stderr, "WSAStartup failed.\n");
system("pause");
exit(1);
}
server.sin_family = AF_INET; /* INet protokol család */
server.sin_addr.s_addr = INADDR_ANY;
server.sin_port = htons(PORT_NO); /* portszám */
fd = socket(AF_INET, SOCK_STREAM, 0 );
if(fd<0){ error("%s: Socket creation error\n",argv[0]); exit(1); }
setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (char *)&on, sizeof on);
setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, (char *)&on, sizeof on);
err = bind( fd, (struct sockaddr *) &server, server_size);
if(err<0){ error("%s: Cannot bind to the socket\n",argv[0]); exit(2); }
err = listen( fd, 10);
if(err<0){ error("%s: Cannot listen to the socket\n",argv[0]); exit(3); }
/* Elso kliens */
sock[0] = accept(fd, (struct sockaddr *) &client, &client_size);
if(sock[0]<0){ error("%s: Cannot accept on socket\n",argv[0]); exit(4); }
sendmsg("Varunk a masik jatekosra\n", 0);
/* Masodik kliens */
sock[1] = accept(fd, (struct sockaddr *) &client, &client_size);
if(sock[1]<0){ error("%s: Cannot accept on socket\n",argv[0]); exit(4); }
sendmsg("A jatek elkezdodott\n", 0);
sendmsg("A jatek elkezdodott\n", 1);
/************** Jatek kod *****************/
nextturn(aktpl);
do {
if (kesz==1) break;
err = recv( sock[aktpl], recbuf, bytes, flags );
if(err<0){ error("%s: Cannot receive from the socket\n",argv[0]); exit(5);
} else { parsecmd(recbuf); };
// aktpl=1-aktpl;
} while (1==1);
close(sock[0]);
close(sock[1]);
close(fd);
return 0;
}