All pastes #274016 Raw Edit

Miscellany

public text v1 · immutable
·published 2006-12-10 10:21 UTC
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;
}