This is my server app, it starts up SDL makes window etc. and then waits for the incoming data....
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <SDL/SDL.h>
#include <SDL/SDL_net.h>
#include <cstring>
//SERVER--------------
int main(int argc,char** argv)
{
freopen("CON","w",stdout);
int running = 1;
char buffer[512];
SDL_Init(SDL_INIT_EVERYTHING);
SDLNet_Init();
SDL_WM_SetCaption("Server", NULL);
SDL_Surface *screen, *background;
screen = SDL_SetVideoMode(640, 480, 32, SDL_SWSURFACE);
background = SDL_DisplayFormat(SDL_LoadBMP("background.bmp"));
IPaddress ip;
SDLNet_ResolveHost(&ip,NULL,1234);
TCPsocket server=SDLNet_TCP_Open(&ip);
TCPsocket client;
SDL_BlitSurface(background, NULL, screen, NULL);
SDL_Flip(screen);
while(running)
{
SDL_Event event;
while(SDL_PollEvent(&event)) {
switch(event.type) {
case SDL_QUIT:
running = 2;
break;
}
}
client=SDLNet_TCP_Accept(server);
if(client)
{
if (SDLNet_TCP_Recv(client, buffer, 512) > 0)
{
printf("From Client: %s\n", buffer);
SDLNet_TCP_Close(client);
}
//SDLNet_TCP_Send(client,text,strlen(text)+1);
//SDLNet_TCP_Close(client);
//break;
}
if (running==2)
{
SDLNet_Quit();
SDL_Quit();
}
}
SDL_FreeSurface(background);
SDL_FreeSurface(screen);
SDLNet_TCP_Close(server);
SDLNet_Quit();
SDL_Quit();
}
And this client starts window waits for the input to send string to server...
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <SDL/SDL.h>
#include <SDL/SDL_net.h>
#include <cstring>
//---------CLIENT----
int main(int argc,char** argv)
{
SDL_Init(SDL_INIT_EVERYTHING);
SDLNet_Init();
//init graficne stvari
SDL_Surface *screen, *background;
screen = SDL_SetVideoMode(640, 480, 32, SDL_SWSURFACE);
background = SDL_DisplayFormat(SDL_LoadBMP("background.bmp"));
bool b[4] = {0,0,0,0};
bool running = true;
char buffer[512];
char* mesg="aaa aa a aa";
char* mesg2="bbbb bb b";
char* mesg3="cc ccccc c";
char* mesg4="d d dddd d";
freopen("CON","w",stdout);
IPaddress ip;
SDLNet_ResolveHost(&ip,"127.0.0.1",1234);
SDL_BlitSurface(background, NULL, screen, NULL);
SDL_Flip(screen);
TCPsocket client=SDLNet_TCP_Open(&ip);
while(running)
{
SDL_Event event;
while(SDL_PollEvent(&event)) {
switch(event.type) {
case SDL_QUIT:
running = false;
SDL_Quit();
break;
case SDL_KEYDOWN:
switch(event.key.keysym.sym)
{
case SDLK_w:
b[0] = 1;
break;
case SDLK_a:
b[1] = 1;
break;
case SDLK_s:
b[2] = 1;
break;
case SDLK_d:
b[3] = 1;
break;
}
break;
case SDL_KEYUP:
switch(event.key.keysym.sym)
{
case SDLK_w:
b[0] = 0;
break;
case SDLK_a:
b[1] = 0;
break;
case SDLK_s:
b[2] = 0;
break;
case SDLK_d:
b[3] = 0;
break;
}
}
if(b[0]){
SDLNet_TCP_Send(client,mesg,strlen(mesg)+1);
SDLNet_TCP_Close(client);
}
if(b[1]){
SDLNet_TCP_Send(client,mesg2,strlen(mesg2)+1);
SDLNet_TCP_Close(client);
}
if(b[2]){
SDLNet_TCP_Send(client,mesg3,strlen(mesg3)+1);
SDLNet_TCP_Close(client);
}
if(b[3]){
SDLNet_TCP_Send(client,mesg4,strlen(mesg4)+1);
SDLNet_TCP_Close(client);
}
}
}
// char text[10000];
//while(SDLNet_TCP_Recv(client,text,10000))
// std::cout << text;
SDL_FreeSurface(screen);
SDL_FreeSurface(background);
SDLNet_TCP_Close(client);
SDLNet_Quit();
SDL_Quit();
}