C Board  

Go Back   C Board > General Programming Boards > Networking/Device Communication

Reply
 
LinkBack Thread Tools Display Modes
Old 11-02-2009, 08:02 AM   #1
Registered User
 
Join Date: Oct 2009
Posts: 2
Question Problem with client

Hello,
I´ve programmed a chatprogram, but the client doesn't connect to the server.
I'm in a local Network. But when someone from outside this network want to connect to
my computer it doesn't work. Here are the sources from the server and the client:

Client :
Code:
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <winsock.h>
#include "resource.h"

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int i;
char ip[20];
char version[] = {"Senden"};
FILE *f;
WSADATA wsa;
int s;
int senden;
struct sockaddr_in addr;
char text[75];
char own_name[60];
char name[60];
	
LPCSTR lpszAppName = version;
LPCSTR lpszTitle   = version;

HINSTANCE hInst;

int APIENTRY WinMain(HINSTANCE hInstance,
           HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
   HWND       hWnd, bButton, hList;
   MSG        msg;
   WNDCLASSEX   wc;

   wc.cbSize        =  sizeof(WNDCLASSEX);
   wc.style         =  CS_HREDRAW | CS_VREDRAW;
   wc.lpfnWndProc   =  WndProc;
   wc.cbClsExtra    =  0;
   wc.cbWndExtra    =  0;
   wc.hInstance     =  hInstance;
   wc.hCursor       =  LoadCursor(NULL,IDC_ARROW);
   wc.hIcon         =  LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_APPLICATION));
   wc.hbrBackground =  GetStockObject(DKGRAY_BRUSH);
   wc.lpszClassName =  lpszAppName;
   wc.lpszMenuName  =  NULL;
   wc.hIconSm       =  (HICON)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_APPLICATION), IMAGE_ICON, 16, 16, 0);

   if( RegisterClassEx(&wc) == 0)
      return 0;
      

      
   hInst=hInstance;
   
hWnd = CreateWindowEx(NULL,
                         lpszAppName,
                         lpszTitle,
                         WS_OVERLAPPEDWINDOW,
                         200,
                         200,
                         400,
                         100,
                         NULL,
                         NULL,
                         hInstance,
                         NULL);

bButton = CreateWindow("BUTTON","Senden",WS_CHILD|WS_VISIBLE|
                          BS_DEFPUSHBUTTON, 140, 40, 100, 20,
                          hWnd, (HMENU)BUTTON, hInstance, NULL);

   if( hWnd == NULL)
      return 0;

   ShowWindow(hWnd, iCmdShow);
   UpdateWindow(hWnd);

   while (GetMessage(&msg, NULL, 0, 0))
   {
      TranslateMessage(&msg);
      DispatchMessage(&msg);
   }


   return msg.wParam;
}

      

LRESULT CALLBACK WndProc(HWND hWnd, UINT umsg, WPARAM wParam, LPARAM lParam)
{    
   HWND hEdit; 
   
   switch (umsg)
   {      
          case WM_CREATE:
               {
               
               hEdit = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "", 
				WS_CHILD | WS_VISIBLE , 
				10, 10, 368, 20, hWnd, (HMENU)IDC_EDIT, GetModuleHandle(NULL), NULL);
				SendMessage(hEdit, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), TRUE);
				break;
                }
                
          case WM_DESTROY:
               remove("send");
               PostQuitMessage(0);
               return 0;
          break;
          
      case WM_COMMAND :
              switch( LOWORD( wParam ) )
              { 
                      case BUTTON:
                      memset(ip, 0, sizeof(ip));
                      //Socket wird vorbereitet
                      f = fopen("own_name", "r");
                      while( fgets(name, sizeof(name), f) !=0 )
                      {}
                      fclose(f);
                      strcpy(own_name, "_");
                      strcat(own_name, name);
                      f = fopen("send", "r");
                      fgets(ip, sizeof(ip), f);
                      fclose(f);
                      
                      MessageBox(NULL,ip,"TEST",MB_OK);
                      
                      addr.sin_family = AF_INET;
                      addr.sin_port = htons(7700);
                      addr.sin_addr.s_addr = inet_addr( ip );
                      
                      MessageBox(NULL,ip,"TEST",MB_OK);
                      if (WSAStartup(MAKEWORD(1, 1), &wsa))
                      {
                      		MessageBox(NULL,"WSAStartup() failed!","ERROR",MB_OK | MB_ICONERROR);
                      }

                      s = socket(AF_INET,SOCK_STREAM,0);

                      if (connect(s, (struct sockaddr*) &addr, sizeof(addr)) < 0)
                      {
                      		     MessageBox(NULL, "Fehler beim Senden!", "ERROR",MB_OK | MB_ICONERROR);
                      }
                      GetDlgItemText( hWnd, IDC_EDIT, text, sizeof(text) -15);
                      strcat(text, own_name);
                      

	                  senden = send(s, text, strlen(text), 0);
	                  closesocket(s);
	                  PostQuitMessage(0);
                      return 0;
                      break;             
              }
      break;
      
   }
   return DefWindowProc(hWnd, umsg, wParam, lParam);
}



Server:
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include <mmsystem.h>
#include <winsock.h>

int main(int argc, char *argv[])
{
	WSADATA wsa;
	char user_name[60];
	int i = 0;
	int j = 0;
	int s;
	int c;
	int empfangen;
	char text[75];
	char message[75];
   	struct sockaddr_in cli;
	int cli_size;
	struct sockaddr_in addr;
	FILE * f;


	if (WSAStartup(MAKEWORD(1, 1), &wsa))
	{
		printf("WSAStartup() failed, %lu\n", (unsigned long)GetLastError());
		return EXIT_FAILURE;
	}

	s = socket(AF_INET,SOCK_STREAM,0);

	memset( &addr, 0, sizeof (addr));
	addr.sin_family = AF_INET;
	addr.sin_port = htons(7700);
	addr.sin_addr.s_addr = htonl( INADDR_ANY );

	if (bind(s, (struct sockaddr*) &addr, sizeof(addr)) == -1)
	{
		perror("bind() failed");
	}

	if (listen(s, 3) == -1)
	{
		perror("listen () failed");
	}

	for(;;)
	{
		cli_size = sizeof(cli);
		c = accept(s, (struct sockaddr*) &cli, &cli_size);

		printf("Verbindung von %s\n", inet_ntoa(cli.sin_addr));
		empfangen = recv(c, text, sizeof(text) - 1, 0);
		PlaySound("neue_nachricht.wav",NULL,SND_FILENAME);
		if (empfangen > 0)
		{
			text[empfangen] = '\0';
			strcpy(message, text);
			i = sizeof(message);
			
			while ( message[i] != 95)
			{
                  message[i] = 0;
                  i--;
            }
            message[i] = 0;
            i = 0;
            
            while( text[i] != 95)
            i++;
            
            i++;
            while ( text[i] != 0)
            {
                  user_name[j] = text[i];
                  j++;
                  i++;
            }
            
            strcat(user_name, " (");
            strcat(user_name, inet_ntoa(cli.sin_addr));
            strcat(user_name, ")");
            f = fopen("usr", "w");
            fputs(user_name, f);
            fclose(f);          
            
			f = fopen("msg", "w");
			fputs(message,f);
			fclose(f);
			i = 0;
			while( user_name[i] != sizeof(user_name))
			{
                   user_name[i] = 0;
                   i++;
             }
             i = 0;
             j = 0;
			
		}
		else
		{
			printf("Fehler beim lesen\n");
		}
		closesocket(c);
	}

	closesocket(s);

	getchar();
	return 0;
}
I hope someone can help me.


PS: I am from Germany so my english is not perfect!
Dave007 is offline   Reply With Quote
Old 11-02-2009, 08:18 AM   #2
and the Hat of Ass
 
Join Date: Dec 2007
Posts: 730
Sounds like your firewall is not allowing the traffic through.
rags_to_riches is online now   Reply With Quote
Old 11-02-2009, 09:36 AM   #3
Registered User
 
Join Date: Oct 2009
Posts: 2
Unhappy

But that isn't the problem. I've turned the firewall off and tested it...but it doesn't work.
Dave007 is offline   Reply With Quote
Reply

Tags
client, problem, programming, server

Thread Tools
Display Modes

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
How to Send Mac Address From Client to Server Lieyza197 C Programming 2 05-27-2009 09:58 AM
Problem with client server program... cprogczar C Programming 2 04-21-2009 07:56 PM
Client works on a LAN but don't send all the data Niara Networking/Device Communication 9 01-04-2007 04:44 PM
client -server problem hegdeshashi C Programming 1 06-13-2006 11:13 PM
C / OpenGL help REALLY needed for simple but annoying problem! Oz_joker C Programming 5 12-03-2003 05:47 PM


All times are GMT -6. The time now is 09:23 PM.


Powered by vBulletin® Version 3.8.1
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.3.0 RC2

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22